我正在尝试构建一个自定义模块来与 Orchard CMS 集成以实现业务应用程序。虽然 Orchard CMS 是一个 MVC 应用程序,但似乎不可能(或者至少是容易)完成所有可以通过 MVC“开箱即用”完成的事情。
我正在尝试对我的 View 进行不显眼的验证,但似乎无法使其发挥作用。
更新:根据下面 Rohan West 的建议,我现在已经使用 ResourceManifest 类和 Script.Require 调用将脚本包含在页面中。
但是,尽管我使用 @Html.EditorFor 的属性具有 .NET 属性,但实际 HTML 元素上的验证属性并未生成。
我在 web.config 文件中设置了 appSettings,如下所示:
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
<add key="webpages:Enabled" value="false" />
<add key="log4net.Config" value="Config\log4net.config" />
</appSettings>
还是没有快乐!
更新 2:根据 Rohan West 的建议,修改 OrchardStarter 类以注释掉以下几行“解决”问题:
ModelValidatorProviders.Providers.Clear();
ModelValidatorProviders.Providers.Add(new LocalizedModelValidatorProvider());
不过应该有更好的方法来处理这个问题。
最佳答案
您需要在模块的资源 list 中定义脚本。
public class ResourceManifest : IResourceManifestProvider
{
public void BuildManifests(ResourceManifestBuilder builder)
{
var manifest = builder.Add();
manifest.DefineScript("jQueryValidation").SetUrl("jquery.validate.js", "jquery.validate.min.js").SetVersion("1.7").SetDependencies("jQuery");
manifest.DefineScript("jQueryValidation_Unobtrusive").SetUrl("jquery.validate.unobtrusive.js", "jquery.validate.unobtrusive.min.js").SetDependencies("jQuery", "jQueryValidation");
}
}
然后在您的页面中
@{
this.Script.Require("jQueryValidation_Unobtrusive").AtHead();
}
看看下面的类
Orchard.Environment.OrchardStarter
在 Orchard 1.4.2 中,有一行删除了所有 ModelValidatorProviders
ModelValidatorProviders.Providers.Clear();
这将从集合中删除默认的 DataAnnotationsModelValidatorProvider。 您可以尝试将其添加到集合中,
关于asp.net-mvc-3 - 是否可以在 Orchard CMS 中使用标准 ASP.NET MVC Unobtrusive Validation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10778897/