这个问题已经在 StackOverflow 上被问过很多次了,但是我没有看到任何可以满足我需求的东西。我想通过使用服务器端数据注释来驱动客户端,即 jQuery,验证是有条件的。
也就是说,我正在尝试构建一个通用下拉模型,如果用户从 DropDownList 中选择“其他”,Other
则调用的耦合文本字段是强制性的。如何使用下拉模型属性上的属性来执行此操作?
这个问题已经在 StackOverflow 上被问过很多次了,但是我没有看到任何可以满足我需求的东西。我想通过使用服务器端数据注释来驱动客户端,即 jQuery,验证是有条件的。
也就是说,我正在尝试构建一个通用下拉模型,如果用户从 DropDownList 中选择“其他”,Other
则调用的耦合文本字段是强制性的。如何使用下拉模型属性上的属性来执行此操作?
是的,这是可能的。看看MVC Foolproof 框架,它有许多不错的附加功能,例如[RequiredIf]
验证属性。他们还与客户端验证一起工作。
如果您对如何实现这一点的细节感兴趣,可以查看这些属性的源代码。这是相当多的工作。您需要让您的属性覆盖IClientValidatable
接口,然后在客户端编写自定义的不显眼的适配器。
我写了一个这样的实现的例子here
。它不处理条件验证,但技术完全相同。您只需要根据您的需要调整客户端适配器。
周围有许多 RequiredIf 实现,例如下面的一个:
另一种选择是 FluentValidation,它不是基于属性的验证,但非常灵活。