2010-07-28 11 views
0

要使用您自己的ModelMetadataProvider,您通常將其設置在global.asax中。使用MVC渦輪機時,在何處使用DI設置ModelMetadataprovider?

我正在使用MVC Turbine,我也需要向我的ModelMetadataProvider注入一個依賴項。

事情是這樣的:

ModelMetadataProviders.Current = new MyModelMetadataProvider(ISomeDependency); 

這是如何最好地MVC渦輪實現的呢?

回答

0

放置這些部分的最佳位置是覆蓋Web應用程序(從TurbineApplication繼承的類型)中的啓動方法。我們目前正致力於通過引入一個ModelMetadataBlade來使這些MVC2功能在v2.2中更加簡單,ModelMetadataBlade將爲您完成對ModelMetadataProvider.Current屬性的所有接線工作。

因此,所有你需要做的就是與容器註冊MyModelMetadataProvider像這樣

container.Register<ModelMetadataProvider, MyModelMetadataProvider>() 

然後MVC渦輪機將完成剩下的爲您服務。要了解我在說什麼,請結賬we're wiring up ModelValidatorProviders。 ModelValidatorBlade向ServiceLocator詢問所有註冊的ModelValidatorProvider,並將它們與運行時連接起來。

如果您有任何意見或建議,可以將它們發佈到Google Group?試圖保持這些東西組織:)

謝謝!

+0

這正是我一直在尋找的。但是,我現在在調用Html.EditorForModel()時在我的視圖中獲得了一個擴展。 「ModelMetadataProvider的一個實例在解析器中以及ModelMetadataProviders.Current中的自定義註冊提供程序中找到,請只設置其中一個。」我沒有在任何地方設置ModelMetadataProviders.Current ... – Jaguir 2011-10-01 05:14:35