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

.NET 6 Razor Pages未加Required的字段自动触发jquery验证如何修复

问题原因

.NET 6 及更高版本的项目默认启用了**可空引用类型(Nullable Reference Types)**特性,你定义的public string Name { get; set; }属于非可空字符串类型,ASP.NET Core 会自动为非可空引用类型的属性隐式添加必填验证规则,不需要显式添加[Required]特性。

修复方案

你可以根据自身需求选择以下任意一种方法解决:

  • 方法1:仅将当前属性改为可空字符串
    改动范围最小,仅针对当前Name属性取消强制必填要求,代码如下:

    public class IndexModel : PageModel
    {
        // 加?标记为可空字符串
        public string? Name { get; set; }
        
        public void OnGet()
        {
            
        }
        // 入参也可以同步改为可空,避免绑定警告
        public void OnPost(string? Name)
        {
            
        }
    }
    
  • 方法2:全局关闭隐式必填验证规则
    保留项目的可空引用类型语法检查能力,仅关闭框架自动为非可空类型加必填验证的逻辑,在Program.cs中添加如下配置:

    builder.Services.AddRazorPages()
        .AddMvcOptions(options => 
        {
            options.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes = true;
        });
    
  • 方法3:关闭项目全局可空引用类型特性
    直接回退到 .NET 5 及之前的可空行为,所有引用类型默认允许为null,修改项目根目录的.csproj配置文件:

    <Project Sdk="Microsoft.NET.Sdk.Web">
      <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <!-- 将Nullable的值从enable改为disable -->
        <Nullable>disable</Nullable>
        <ImplicitUsings>enable</ImplicitUsings>
      </PropertyGroup>
    </Project>
    

修改完成后重新编译项目,刷新页面即可看到input元素不再自动生成必填验证相关的属性。


内容的提问来源于stack exchange,提问作者MrJahanbin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:36:07