0

在我们当前的应用程序实现中,我们严重依赖使用 MicrosoftMvcValidation.debug.js 的客户端验证。

我们在数据库中定义了表单元素和表单验证器,并在运行时从数据库中加载。我们有视图模型属性 Answer1、Answer2、Answer3 等,到目前为止,所有字段都是必需的,因此我们在每个字段上都有 [Required] 属性,但现在我们需要根据数据库设置在运行时应用这个必需的注释因为有些问题是可选的。

我不想对验证器本身进行任何重新实现,我只想在运行时动态删除 [Required] 属性和/或它们的效果,或者在运行时动态添加它们。

使用 ASP.NET MVC 2。

4

2 回答 2

3

将 [Required] 属性添加到可能需要的任何字段。只要您不绑定控制客户端,您将绕过客户端验证而不会出现问题。在服务器端回发操作中,循环遍历 ModelState(实现 IDictionary)并清除要绕过的验证器的 ModelState 上的错误。

foreach( var validator in ModelState){
   if( validator.Key == "Validator_To_Bypass")
       validator.Value.Errors.Clear();
}
于 2011-09-08T17:31:42.087 回答
0

似乎可以创建一个继承 ValidationAttribute 的自定义类,该类可以在运行时确定如何或是否完成验证。这是实现这一要求的一种方式。

于 2011-07-20T19:19:38.910 回答