2

我希望能够将模型状态注入服务。

服务

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();

有任何想法吗?

4

1 回答 1

2

这作为 InstancePerHttpRequest 没有意义。

在单个 Http 请求期间可以有很多控制器,并且可以有很多模型状态。即使您ControllerContext通过say中的引用访问当前对象,HttpContext.Current您将生成的代码也容易因设计而出现错误和故障。

我的建议是创建一个类似内存服务的存储库来存储所有当前的 ModelState 并通过控制器操作键检索它们,例如(简单的愚蠢示例):

interface IHttpRequestModelStates
{
   ICollection<string, ModelState> ModelStates {get; set;}
   // you can retrieve Controller:Home / Index  model state 
   // using  ModelStates["HomeIndex"]
}
于 2012-09-19T11:16:04.260 回答