MVC 6引入了View組件,並表示它比局部視圖更強大和更靈活。那麼這是替代部分視圖嗎?它們之間的區別究竟是什麼。爲什麼要在部分視圖中使用MVC 6功能視圖組件:有什麼區別?
回答
根據該鏈路https://docs.asp.net/en/latest/mvc/views/view-components
新建ASP.NET MVC 6,視圖組件(VCS)類似於局部的觀點,但他們更強大。 VC在控制器和視圖之間包含相同的關注點分離和可測試性好處。你可以將VC視爲一個微型控制器 - 它負責渲染一個塊而不是整個響應。
所以它只是一個增強的局部視圖,另一個區別是當你使用局部視圖時,你仍然依賴於控制器,而在視圖組件中你不需要控制器。所以有一個分離的擔憂。
ASP.NET View組件有一個詳細的文章。 http://www.tugberkugurlu.com/archive/exciting-things-about-asp-net-vnext-series-mvc-view-components
您可以直接調用其他(部分)視圖,而無需使用任何控制器。 看到這個鏈接:https://msdn.microsoft.com/en-us/library/system.web.mvc.html.renderpartialextensions.renderpartial%28v=vs.118%29.aspx 所以我不能低估組件視圖的真正優勢:-( –
部分視圖不能有業務邏輯,而在視圖組件中,你可以有業務邏輯 –
我也對此感到困惑@JalpeshVadgama說w/vc你沒有依賴控制器。所以......你依賴於ViewComponent而不是什麼? – BVernon
下,您可能希望使用ViewComponent
,而不是一個PartialView
一個例子:
你需要寫一堆業務邏輯的地方,例如,你可能需要聯繫第三方Web服務,並獲得數據並做一些事情,然後顯示這些信息。
對於上面的場景,確定你可以在局部視圖本身編寫C#代碼,但它的醜陋,你也希望代碼是可測試的。因此,這就是視圖組件可能有用的地方,即,您可以將所有業務邏輯寫入視圖組件並返回視圖(這是類型ViewViewComponentResult
)。
查看組件與子操作不同。
你能解釋ViewComponents與Child Actions不同嗎? –
@ErikFunkenbusch他們是相同的,沒有性能缺陷。雖然如果你需要從Ajax中返回一個視圖組件,我會堅持使用一個Action。 – Schotime
在ASP.NET MVC Core中,在視圖中有@注入和依賴注入。您可以將所有業務邏輯和第三方Web服務包裝在一個界面中,並將其作爲局部視圖中的依賴項。這將爲您提供與視圖組件相同的很好分離且可測試的代碼。那麼真的有什麼意義呢? –
當您需要局部視圖時,也會使用ViewComponents,該視圖需要在_Layout中調用的模型。爲避免編寫C#代碼在Layout中創建模型,最好使用ViewComponent,通過依賴注入可以使用爲應用程序配置的服務,與控制器相同。
- 1. mvc中的視圖與局部視圖有什麼區別
- 2. 在MVC中局部視圖和強類型視圖有什麼區別?
- 3. 爲什麼需要視圖源功能
- 4. 爲什麼MVC在使用部分視圖時不綁定?
- 5. 光標和視圖有什麼區別?
- 6. 獲取根視圖有什麼區別?
- 7. 部分視圖是什麼?
- 8. 作爲局部視圖和JSON結果的返回視圖有什麼區別
- 9. 爲什麼要將MVC中的視圖分解爲視圖類和模板
- 10. 爲什麼我的視圖功能404?
- 11. 綁定視圖和注入視圖有什麼區別?
- 12. 視圖與視圖有什麼區別:make?
- 13. iOS - 表視圖和表視圖控制器有什麼區別
- 14. 爲什麼Joomla將MVC視圖分爲兩部分
- 15. 爲什麼視圖部分顯示?
- 16. MVC(火花視圖引擎)x和m有什麼區別?
- 17. 從視圖中調用視圖組件時,什麼是組件?
- 18. 爲什麼在ASP.NET MVC視圖的某些部分缺少Intellisense?
- 19. 的jQuery爲什麼在MVC視圖
- 20. 我什麼時候需要將視圖分爲兩個視圖?
- 21. 使用Razor視圖的MVC項目中的Master Site和Index.cshtml有什麼區別?
- 22. 視差和視差有什麼區別
- 23. 部分視圖MVC - 與視圖不同的部分視圖功能
- 24. 在android xml中小寫和大寫「視圖」有什麼區別?
- 25. 爲什麼ViewPager不能在列表視圖中使用位圖
- 26. AEM組件視圖和部分的預期用法是什麼?
- 27. 組件模板視圖中的'default_'部分是什麼意思?
- 28. 爲什麼我需要在MVC中的所有視圖文件夾中的web.config?
- 29. 爲什麼NavigationController不在使用視圖?
- 30. MVC中部分視圖和用戶控件之間的區別
可能的[MVC 6 View Components]重複(http://stackoverflow.com/questions/26989320/mvc-6-view-components) –
我認爲View組件是Child Actions的替代品;部分視圖在您尋找添加幾個常見html元素的簡單解決方案時仍然很有用。 –