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

Mik*_*ike 5 asp.net-mvc asp.net-mvc-2

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

我怎样才能做到这一点?

谢谢.

编辑

我正在服务器上使用Data Annotations进行验证,例如:

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

在客户端我正在使用这个:

<% Html.EnableClientValidation(); %>
Run Code Online (Sandbox Code Playgroud)

Pet*_*ter 5

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

<script type="text/javascript">
  document.getElementById("searchButton").disableValidation = true;
</script>
Run Code Online (Sandbox Code Playgroud)

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

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

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

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