ASP.NET MVC 3:如果禁用目标字段,则客户端验证消息会随之而来

时间:2011-10-25 17:55:05

标签: asp.net-mvc-3 validation

我有一个表单,如果在下拉列表中选择了选项1,则该字段(字段A)需要为空,如果选择了选项2,则需要该表单。我有一些javascript,当选择选项1时清除并禁用字段A.

我将Simon Ince的RequiredIf属性应用于模型中的字段A,取决于选项1,并且它运行良好。那不是问题。

以下是导致问题的事件序列:

  1. 用户选择了选项2(因此需要字段A)且字段A为空。
  2. 用户点击“保存”。验证消息显示在字段A和验证摘要中。一切都很好。
  3. 用户更改为选项1.字段A已禁用。
  4. 用户点击“保存”。验证消息仍然是字段A ,但出现在验证摘要中。
  5. 我从中得出结论,RequiredIf验证正在运行(并且字段A正在通过验证),但旧的验证消息仍然存在。我不想要的。

    顺便说一句,这一切都是客户端的。

    如果该字段未被禁用,则一切都按预期工作,但我希望它被禁用而不是可编辑但“必须为空”。

    除了通过js和jQuery清除SPAN标记消息之外,有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

由于验证要求正在发生变化,因此您需要进行验证,然后更新所有错误消息。由于该问题与下拉列表中所选项目的更改有关,请添加以下内容:

$("#myDropDown").live("change", function() { // assumes dropdownlist has id of 'myDropDown'
    $("form").validate().form(); // form() causes error messages to update
});