【发布时间】:2021-08-27 23:42:48
【问题描述】:
我正在为视图模型创建自定义模型绑定器,实现 IModelBinder
我的视图模型中有很多属性,其中大部分不需要任何自定义绑定。与其从ModelBindingContext 单独显式设置我的模型上的所有属性值,不如让框架为我绑定模型,然后我将执行任何自定义绑定:
public class ApplicationViewModelBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
if (bindingContext == null)
{
throw new ArgumentNullException(nameof(bindingContext));
}
// get .net core to bind values on model
// Cary out any customization of the models properties
bindingContext.Result = ModelBindingResult.Success(bindingContext.Model);
return Task.CompletedTask;
}
}
基本上我想执行默认模型绑定,然后应用自定义绑定,类似于此 SO post 中采用的方法,但适用于 .NET Core,而不是框架。
我认为应用默认绑定会很简单,但一直无法找到如何做到这一点。我相信解决方案将涉及ComplexTypeModelBinder 和ComplexTypeModelBinderProvider 类,但似乎无法找到解决方法。
我知道当 POST 请求到达我的控制器方法时我可以进行任何更改,但这似乎是错误的地方和错误的时间。
【问题讨论】:
标签: asp.net-core asp.net-core-mvc model-binding custom-model-binder defaultmodelbinder