我在一个表单上有两个按钮。一个用于提交表单,另一个用于搜索。我不希望搜索按钮触发任何服务器端或客户端验证。
我怎样才能做到这一点?
谢谢。
编辑
我在服务器上使用数据注释进行验证,例如:
[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/