.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
相关产品推荐
相关产品推荐

