我希望能够将模型状态注入服务。
服务
public ThirdPartyService(IValidationDictionary dict)
{
// IValidationDictionary, in this case is a ModelStateWrapper object
// I created to wrap model state
}
注册
builder.Register(x => new ModelStateWrapper(x.Resolve<ControllerType>().ViewData.ModelState))
.As<IValidationDictionary>().InstancePerHttpRequest();
有什么想法吗?
答案 0 :(得分:2)
这作为InstancePerHttpRequest没有意义。
可能有很多控制器,在单个Http请求中可能存在很多模型状态。即使您通过参考ControllerContext
访问当前的HttpContext.Current
对象,您将生成的代码也容易因设计而出现错误和故障。
我建议创建一个内存服务类存储库来存储所有当前的ModelState,并通过控制器操作键检索它们,例如(简单的愚蠢示例):
interface IHttpRequestModelStates
{
ICollection<string, ModelState> ModelStates {get; set;}
// you can retrieve Controller:Home / Index model state
// using ModelStates["HomeIndex"]
}