Asp.net mvc 2 使用MVC Turbine时,在何处使用DI设置ModelMetadataprovider?

Asp.net mvc 2 使用MVC Turbine时,在何处使用DI设置ModelMetadataprovider?,asp.net-mvc-2,dependency-injection,metadata,turbine,Asp.net Mvc 2,Dependency Injection,Metadata,Turbine,要使用您自己的ModelMetadataProvider,您通常在global.asax中设置它 我正在使用MVC Turbine,我还需要将依赖项注入到我的ModelMetadataProvider中 大概是这样的: ModelMetadataProviders.Current = new MyModelMetadataProvider(ISomeDependency); MVC Turbine是如何最好地实现这一点的?最好的方法是覆盖web应用程序中的启动方法(从TurbineApplic

要使用您自己的ModelMetadataProvider,您通常在global.asax中设置它

我正在使用MVC Turbine,我还需要将依赖项注入到我的ModelMetadataProvider中

大概是这样的:

ModelMetadataProviders.Current = new MyModelMetadataProvider(ISomeDependency);

MVC Turbine是如何最好地实现这一点的?

最好的方法是覆盖web应用程序中的启动方法(从TurbineApplication继承的类型)。我们目前正在通过引入ModelMetadataBlade使v2.2中的这些MVC2功能变得更容易,该ModelMetadataBlade将为您完成到ModelMetadataProvider.Current属性的所有连接

因此,您所要做的就是向容器注册MyModelMetadataProvider,如下所示

container.Register<ModelMetadataProvider, MyModelMetadataProvider>()
container.Register()
然后MVC Turbine将为您完成剩下的工作。要想了解我在说什么,请直接查看。ModelValidatorBlade向ServiceLocator请求所有注册的ModelValidatorProvider,并将它们与运行时连接起来

如果您有任何反馈或想法,可以将其发布到网站上吗?努力使这些事情井然有序:)


谢谢

这正是我想要的。但是,我现在在调用Html.EditorForModel()时在视图中得到一个exteption。“在解析程序中找到ModelMetadataProvider的实例,并且在ModelMetadataProviders.Current中找到自定义注册的提供程序。请仅设置其中一个。我没有设置ModelMetadataProviders.Current anywhere…”。。。