我正在尝试在 MVC 中使用自定义模型绑定器,我想从 IoC 容器中解析它。我遇到的问题是,在添加 MVC 服务时无法访问我的容器,因为我的容器尚未构建(并且我需要在构建容器之前添加 MVC)。感觉就像是先有鸡还是先有蛋的问题,我确信我缺少一个简单的解决方案。
Example:
services.AddMvc().AddMvcOptions(options =>
{
options.ModelBinders.Add(serviceProvider.Resolve<CustomModelBinder>());
});
我的自定义模型活页夹如下所示:
public class CustomModelBinder : IModelBinder
{
private IServiceProvider serviceProvider;
public CustomModelBinder(IServiceProvider serviceProvider)
{
this.serviceProvider = serviceProvider;
}
public Task<ModelBindingResult> BindModelAsync(ModelBindingContext bindingContext)
{
var model = serviceProvider.GetService(bindingContext.ModelType);
bindingContext.Model = model;
var binder = new GenericModelBinder();
return binder.BindModelAsync(bindingContext);
}
}
根据这里的帖子:https://github.com/aspnet/Mvc/issues/4167
要直接回答您的问题,请使用:
bindingContext.OperationBindingContext.ActionContext.HttpContext.RequestServices
另外,您还可以选择使用[FromServices]
为您解决。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)