【问题标题】:Where to set the ModelMetadataprovider with DI when using MVC Turbine?使用 MVC Turbine 时在哪里使用 DI 设置 ModelMetadataprovider?
【发布时间】:2011-03-22 04:54:51
【问题描述】:

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

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

类似这样的:

ModelMetadataProviders.Current = new MyModelMetadataProvider(ISomeDependency);

如何使用 MVC Turbine 最好地实现这一点?

【问题讨论】:

    标签: asp.net-mvc-2 dependency-injection metadata turbine


    【解决方案1】:

    放置这些部分的最佳位置是在您的 Web 应用程序(继承自 TurbineApplication 的类型)中覆盖 Startup 方法。我们目前正在努力通过引入一个 ModelMetadataBlade 来简化 v2.2 中的这些 MVC2 功能,它将为您完成与 ModelMetadataProvider.Current 属性的所有连接。

    所以你所要做的就是像这样在容器中注册 MyModelMetadataProvider

    container.Register<ModelMetadataProvider, MyModelMetadataProvider>()
    

    然后 MVC Turbine 将为您完成剩下的工作。要了解我在说什么,请查看we're wiring up ModelValidatorProviders。 ModelValidatorBlade 向 ServiceLocator 询问所有已注册的 ModelValidatorProvider 并将它们与运行时联系起来。

    如果您有任何反馈或想法,可以将它们发布到Google Group 吗?试图让这些事情井井有条:)

    谢谢!

    【讨论】:

    • 这正是我想要的。但是,当调用 Html.EditorForModel() 时,我现在在我的视图中得到一个扩展。 “在解析器中发现了 ModelMetadataProvider 的一个实例,并且在 ModelMetadataProviders.Current 中找到了一个自定义注册的提供者。请只设置一个或另一个。”我没有在任何地方设置 ModelMetadataProviders.Current...
    猜你喜欢
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 2016-08-27
    • 2020-10-11
    • 2013-10-28
    相关资源
    最近更新 更多