gpt4 book ai didi

c# - Orchard 客户端验证 - 它应该如何外观/工作?

转载 作者:太空宇宙 更新时间:2023-11-03 11:00:03 26 4
gpt4 key购买 nike

我正在尝试在 Orchard 的管理页面中使用客户端验证。我已经成功地使用 this question 中讨论的技术使其工作。 , 但在对 Orchard 源代码和在线进行了一些挖掘之后,在我看来,注释掉这些行

// Register localized data annotations    
ModelValidatorProviders.Providers.Clear();
ModelValidatorProviders.Providers.Add(new LocalizedModelValidatorProvider());

正在颠覆一些允许本地化错误字符串的内置 Orchard 功能。在这一点上,在我们的 OrchardStarter.cs 中加入这些行是验证工作与不工作之间的唯一区别。

我希望得到一些关于这方面的指导,也许来自 Orchard 团队。如果这些行必须退出才能进行验证,那么为什么它们首先在那里?如果他们在那里是有充分理由的,那么我(和其他人)在我们尝试让客户端验证工作时做错了什么?如果需要,我很乐意发布代码示例,尽管它是带有数据注释的非常标准的 ViewModel。谢谢。

最佳答案

用 Orchard 自己的实现替换 DataAnnotationsModelValidatorProvider (DAMVP),这允许以 Orchard 方式本地化验证消息。它这样做的方式是通过替换例如[Required][LocalizedRequired] 在将控制权传递给 DAMVP 之前。请注意,DAMVP 确实 完成了它的工作 - 但只有在 Orchard 对属性进行了“困惑”之后。

问题是 DAMVP 使用 Attribute 的类型来应用客户端验证属性。现在它找不到例如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

因此,目前看来,问题标题的官方答案是“不应该”。

关于c# - Orchard 客户端验证 - 它应该如何外观/工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18020131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com