是否有可能在Orchard CMS中使用标准的ASP.NET MVC Unobtrusive Validation?

时间:2012-05-28 02:59:34

标签: asp.net-mvc-3 orchardcms

我正在尝试构建自定义模块以与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());

应该有一种更好的方法来解决这个问题。

1 个答案:

答案 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。 您可以尝试将其添加到集合中,