这可能是因为模型参数中的属性名称与前端表单输入字段的名称不匹配导致的。解决方法是在前端表单中根据模型属性的名称命名表单输入字段的名称。
例如,如果模型参数如下所示:
public class User
{
public string Username { get; set; }
public int Age { get; set; }
}
在前端表单中应该为输入字段命名为 "Username" 和 "Age":
如果仍然存在问题,可以尝试使用 [FromBody]
特性将参数传递给操作方法:
[HttpPost]
public IActionResult MyMethod([FromBody] User user)
{
// Do something with user object
}
或者,可以在 Startup.cs 中调用 AddMvc()
方法时启用自动验证功能:
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddMvcOptions(options =>
{
options.ModelBindingMessageProvider.SetValueMustNotBeNullAccessor(
_ => "The field is required.");
});
这将在模型绑定期间抛出异常,如果发现空值字段,从而有效地验证验证所有模型绑定。