如何设置C# MVC代码避免视图加载时校验正则表达式(如[Required])
解决ASP.NET MVC中[Required]校验提前触发的问题
问题说明
运行项目时发现,类似[Required]这类数据注解校验会在输入数据、还未提交表单时就触发,干扰正常输入流程。
附相关控制器代码:
public ActionResult Add(Student stdnt) { if (ModelState.IsValid == true) { BlStudent Bl = new BlStudent(); if (Bl.Add(stdnt) == true) { ViewBag.message = "添加成功!"; } else { ViewBag.message = "添加失败"; } } else { ViewBag.message = "请正确填写信息!"; } return View(); }
解决方法
方法1:全局/局部禁用客户端校验
ASP.NET MVC默认启用基于jQuery Validate的客户端实时校验,若不需要该功能可直接关闭:
- 全局禁用(修改
web.config):<appSettings> <add key="ClientValidationEnabled" value="false" /> <add key="UnobtrusiveJavaScriptEnabled" value="false" /> </appSettings> - 单个视图局部禁用:
在视图顶部添加代码:@{ HtmlHelper.ClientValidationEnabled = false; HtmlHelper.UnobtrusiveJavaScriptEnabled = false; }
方法2:修改客户端校验触发时机
若想保留客户端校验,但仅在表单提交时触发,可修改jQuery Validate的默认配置:
在视图页面的脚本区域添加:
$(function() { // 取消输入、点击等操作时的自动校验 $('form').validate({ onfocusout: false, onkeyup: false, onclick: false }); });
方法3:针对特定字段调整
如果仅需个别字段不提前触发校验,可在视图中给对应输入框添加data-val-ignore="true"属性,或自定义该字段的校验规则。
内容的提问来源于stack exchange,提问作者Farimah
相关产品推荐
相关产品推荐

