这些行用于将DataAnnotationsModelValidatorProvider
( DAMVP
) 替换为 Orchard 自己的实现,这允许以 Orchard 方式本地化验证消息。它这样做的方式是[Required]
在[LocalizedRequired]
将控制权传递给DAMVP
. 请注意,它DAMVP
确实可以完成它的工作 - 但只有在 Orchard 已经“弄乱”了这些属性之后。
问题是DAMVP
使用类型Attribute
来应用客户端验证属性。现在它找不到 eg RequiredAttribute
,因为它已被LocalizedRequiredAttribute
. 所以它不知道它应该添加什么——如果有的话——客户端验证属性。
因此,对这些行进行评论将使您失去 Orchard 的本地化。留下它们会使您失去客户验证。
一种可能有效的解决方法(没有通过 Orchard 的代码进行足够的查看,并且目前还没有测试的方法)是DAMVP
了解 Orchard 的Localized
属性以及如何处理它们。
DAMVP
有一个静态RegisterAdapter()方法,用于为属性添加新的客户端规则。它需要使用属性的类型和客户端适配器(负责添加客户端属性的类)的类型。
因此,类似以下的内容可能会起作用:
在 OrchardStarter.cs 中:
// Leave the LocalizedModelValidatorProvider lines uncommented/intact
// These are the four attributes Orchard replaces. Register the standard
// client adapters for them:
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(LocalizedRegularExpressionAttribute),
typeof(RegularExpressionAttributeAdapter)
);
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(LocalizedRequiredAttribute),
typeof(RequiredAttributeAdapter)
);
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(LocalizedRangeAttribute),
typeof(RangeAttributeAdapter)
);
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(LocalizedStringLengthAttribute),
typeof(StringLengthAttributeAdapter)
);
至于官方说法,自从 1.3 引入本地化验证以来,这似乎没有奏效,并且影响被认为是低的:http: //orchard.codeplex.com/workitem/18269
因此,目前,问题标题的官方答案似乎是“不应该”。