2

我正在尝试构建一个自定义模块以与 Orchard CMS 集成以实现业务应用程序。虽然 Orchard CMS 是一个 MVC 应用程序,但似乎不可能(或者至少很容易)完成所有可以使用 MVC “开箱即用”完成的事情。

我正在尝试通过不显眼的验证来处理我的观点,但似乎无法让它发挥作用。

更新:根据下面 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());

不过应该有更好的方法来处理这个问题。

4

1 回答 1

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

于 2012-05-28T03:09:13.160 回答