asp.net-mvc - 如何在 ASP.NET MVC 2 中执行 "causesvalidation=false"?

标签 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(); %>

最佳答案

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

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

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

在服务器端,您的问题有点难以回答,因为这完全取决于您是否以及如何进行模型绑定(bind),以及当有人单击该搜索按钮时您的 Controller 方法会做什么。一种选择可能只是清除 ModelState 中的所有错误......这是一种方法:
private static void ClearErrors(ModelStateDictionary modelState)
{
    foreach (var key in modelState.Keys)
    {
        modelState[key].Errors.Clear();
    }
}

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

关于asp.net-mvc - 如何在 ASP.NET MVC 2 中执行 "causesvalidation=false"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3470540/

相关文章:

ASP.NET 和异步 - 它是如何工作的?

asp.net-mvc - NUnit 中 MbUnit 的行属性?

asp.net-mvc - asp.net mvc 单选按钮状态

javascript - ASP.Net MVC - 将 Javascript 关联数组发送到 Controller

JQuery DataTables .Net 服务器端分页问题

asp.net-mvc - 将 Action 方法参数传递给asp.net mvc中的ActionFilterAttribute

asp.net-mvc - 将多个参数传递给 Controller ​​?

c# - EmptyResult 上的 jQuery AJAX 请求炸弹

visual-studio-2010 - "Run Custom Tool"用于 MVC2 项目中的 resx 文件(来自外部应用程序/脚本)

c# - 发布到编辑表单时 DropDownList 项目为空