我正在将应用程序从 .Net 标准转换为 .Net 6,但如果我不传入所有不可为空的字段,我的控制器会抛出错误。 例如
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string CustomerType { get; set; }
}
当我尝试将该对象传递给没有某个字段的操作时,它会抛出类似“FirstName 字段是必需的”的错误。 我该如何解决这个问题? 我通过启动文件使用 NewtonSoft,如下所示:
builder.Services.AddControllers()
.AddNewtonsoftJson(options =>
{
options.UseMemberCasing();
});
builder.Services.AddControllersWithViews()
.AddNewtonsoftJson(options =>
{
options.UseMemberCasing();
});
最简单的方法是打开项目配置文件(只需在 VS 解决方案资源管理器中单击项目名称)并删除选项 nullable
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>disable</Nullable> <!-- change from enable or remove -->
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
或者,如果您只想在控制器操作中禁用可空检查,您可以尝试另一个选项:
builder.Services.AddControllers(
options => options.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes = true);