在MVC 3中,我明白你可以創建自定義的WebViewPages。你可以注入依賴,使用構造函數注入,通過IOC容器?您可以使用IOC容器將依賴關係注入到自定義WebViewPage的構造函數中嗎?
回答
有布拉德·威爾遜http://bradwilson.typepad.com/blog/2010/07/service-location-pt3-views.html
的其他人的意見允許構造函數注入不完全正確的語句在博客視圖注射的expample。是的IDependencyResolver
可以創建具有構造函數參數的視圖。但是除非你正在實現你自己的視圖引擎,否則這根本不會對你有所幫助。像剃鬚刀這樣的現有視圖引擎會要求你有一個無參數的構造函數。這意味着您只能對視圖進行屬性注入。
但是正如其他人所說的那樣,你不應該無論如何都要進行注射。您的視圖應該是愚蠢的,只是將視圖模型呈現爲HTML。任何需要依賴的應該在控制器或服務中完成。
這是不可能執行構造函數注入。但是你可以做這樣的事情有,比方說,Ninject:
public abstract class CustomViewBase<TModel> : WebViewPage<TModel> where TModel : class { [Inject] public IFace Face { get; set; } }
,並假設你已經設定了的IDependencyResolver在Global.asax中,你應該有正確的初始化屬性@Face。 但是一個重要的警告:您可能無法訪問_Layout.cshtml中的@Face,因爲(根據Brad Wilson)佈局在MVC之外工作,當您嘗試在佈局頁面中訪問時,@Face將爲null。
在任何情況下,我同意其他人的觀點不應該處理任何複雜的邏輯。
這太棒了!我不知道你可以用Ninject做到這一點。 –
也不一定是Ninject。 Autofac和其他人會做同樣的事情,而不需要裝飾者。 –
它在繼承的頁面中運行良好。但是,在MVC中的佈局(masterpage)內部訪問相同的注入類方法的解決方案是什麼 –
- 1. DryIoc - 使用構造函數注入時指定依賴關係
- 2. IoC,依賴注入和構造函數參數
- 3. 構造函數中的依賴注入
- 4. 如何將依賴關係注入到ELMAH自定義ErrorLog中?
- 5. 使用Unity.Mvc5注入依賴關係時的多個控制器構造函數
- 6. 使用依賴注入容器時明確依賴關係
- 7. 依賴類的構造函數注入
- 8. IoC:使用靜態IoC容器進行依賴注入
- 9. NET IoC統一容器依賴注入
- 10. laravel - 依賴注入和IoC容器
- 11. 您可以在PHP中執行架構層依賴關係嗎?
- 12. C#如何使用IoC容器注入嵌套的依賴關係?
- 13. 構造函數注入和注入依賴關係的初始化
- 14. 依賴注入與2構造函數
- 15. Scaldi依賴注入與構造函數
- 16. ReactiveUI依賴注入構造函數
- 17. 構造函數依賴注入laravel 5
- 18. 依賴注入(構造函數)與WebForms?
- 19. OOP,依賴注入和構造函數
- 20. 使用依賴注入容器時靜態確定缺失的依賴關係
- 21. 使用IoC容器的OOD - 如何構造依賴對象?
- 22. 錯誤注入到控制器構造函數的依賴
- 23. IoC依賴注入到自定義HTTP模塊 - 如何? (ASP.NET)
- 24. C#依賴容器和構造函數
- 25. MVC4和「爲此對象定義的無參數構造函數」。錯誤使用Unity來注入依賴關係?
- 26. 使用Guice將依賴注入到Android活動的構造函數中
- 27. 如何在WCF中將依賴關係注入到自定義的UserNamePasswordValidator中?
- 28. 在Ruby中進行構造函數注入時的循環依賴關係
- 29. 在構造函數中使用Dagger進行依賴注入
- 30. IoC /依賴注入 - 如何處理上下文依賴關係(使用Structuremap)
如果您有自定義授權,您希望能夠用作視圖的屬性,該怎麼辦? (指定某些不應該在沒有所需權限的情況下在剃鬚刀中渲染的部分) –