You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:05:23