如何在ASP.NET MVC 2中执行“causevalidation = false”?

时间:2010-08-12 17:52:00

标签: asp.net-mvc asp.net-mvc-2

我在一张表格上有两个按钮。一个用于提交表单而另一个用于搜索。我不希望搜索按钮触发任何服务器端或客户端验证。

我该怎么做?

感谢。

修改

我正在服务器上使用数据注释进行验证,例如:

    [Required(ErrorMessage = "Institution is required")]
    [Range(1, 2, ErrorMessage="Please select an institution")]
    [DisplayName("Institution")]
    public int InstitutionId { get; set; }

在客户端我正在使用它:

<% Html.EnableClientValidation(); %>

1 个答案:

答案 0 :(得分:5)

要禁用搜索按钮的客户端验证,请在页面中添加如下脚本:

<script type="text/javascript">
  document.getElementById("searchButton").disableValidation = true;
</script>

如果触发按钮有一个名为“disableValidation”的字段,其值为true,则不会运行客户端验证。

在服务器端,你的问题有点难以回答,因为这完全取决于你是否以及如何进行模型绑定以及当有人点击该搜索按钮时你的控制器方法会做什么。一个选项可能只是清除ModelState中的所有错误......这是一个方法:

private static void ClearErrors(ModelStateDictionary modelState)
{
    foreach (var key in modelState.Keys)
    {
        modelState[key].Errors.Clear();
    }
}

如果您从控制器发布一些示例代码,我可以尝试给出更好的答案。