在ASP.NET Core 3.1中,如果嵌套模型在POST请求时不会回传,可以尝试以下解决方法:
确保视图中的表单字段名称与控制器中的模型属性名称匹配。例如,如果嵌套模型中有一个名为"NestedModel"的属性,那么表单字段的名称应为"NestedModel.PropertyName"。
使用 [Bind]
特性来显式绑定嵌套模型。在控制器的POST方法中,使用 [Bind]
特性来指定要绑定的属性。例如:
[HttpPost]
public IActionResult MyAction([Bind("NestedModel.Property1, NestedModel.Property2")]MyViewModel viewModel)
{
// ...
}
确保嵌套模型的属性具有公共的get
和set
访问器。如果属性只有get
访问器,则绑定引擎无法将值绑定到该属性。
确保嵌套模型属性的类型是可绑定的,即该类型具有默认的构造函数,并且具有公共的get
和set
访问器。
如果以上方法都没有解决问题,可以尝试使用 [FromBody]
特性来显式指定从请求正文中绑定模型。例如:
[HttpPost]
public IActionResult MyAction([FromBody]MyViewModel viewModel)
{
// ...
}
请注意,使用 [FromBody]
特性时,请求的Content-Type必须为"application/json",并且请求正文中需要提供正确的JSON格式数据。