我正在尝试构建自定义模块以与Orchard CMS集成以实现业务应用程序。虽然Orchard CMS是一个MVC应用程序,但似乎不可能(或者,至少很容易)完成所有可以使用MVC“开箱即用”完成的事情。
我正试图通过不显眼的验证来处理我的观点,但似乎无法使其发挥作用。
更新:根据Rohan West的建议,我现在使用ResourceManifest类和Script.Require调用获得了页面中包含的脚本。
但是,尽管在我的属性上使用了我的@Html.EditorFor on上的.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());
应该有一种更好的方法来解决这个问题。
答案 0 :(得分:3)
您需要在模块的资源清单中定义脚本。
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。 您可以尝试将其添加到集合中,