在ASP.NET Core 2.2中,可以使用以下方法进行类型绑定:
[FromBody]
、[FromForm]
、[FromQuery]
等属性来指定绑定来源。例如:[HttpPost]
public IActionResult Create([FromBody] MyModel model)
{
// 执行创建逻辑
return Ok();
}
ConfigureServices
方法中添加以下代码来启用自动模型绑定:services.AddMvc()
.AddMvcOptions(options =>
{
options.ModelBindingMessageProvider.SetValueMustNotBeNullAccessor(
_ => "该字段不能为空。");
})
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
这样,ASP.NET Core将根据请求的内容类型和参数类型,自动将请求数据绑定到相应的参数模型上。例如,可以在控制器的参数中直接声明一个复杂类型,如下所示:
[HttpPost]
public IActionResult Create(MyModel model)
{
// 执行创建逻辑
return Ok();
}
IModelBinder
接口的类,并将其注册到ASP.NET Core的依赖注入容器中。例如:public class MyModelBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
// 执行自定义绑定逻辑
return Task.CompletedTask;
}
}
然后,在控制器的参数上使用[ModelBinder]
属性来指定要使用的绑定器:
[HttpPost]
public IActionResult Create([ModelBinder(typeof(MyModelBinder))] MyModel model)
{
// 执行创建逻辑
return Ok();
}
这样,当请求到达时,ASP.NET Core将使用自定义绑定器来处理参数绑定逻辑。
以上是ASP.NET Core 2.2中类型绑定的几种解决方法的示例代码。根据具体的需求,可以选择适合的方法进行类型绑定。