2015-04-23 36 views
35

MVC 6引入了View組件,並表示它比局部視圖更強大和更靈活。那麼這是替代部分視圖嗎?它們之間的區別究竟是什麼。爲什麼要在部分視圖中使用MVC 6功能視圖組件:有什麼區別?

+2

可能的[MVC 6 View Components]重複(http://stackoverflow.com/questions/26989320/mvc-6-view-components) –

+0

我認爲View組件是Child Actions的替代品;部分視圖在您尋找添加幾個常見html元素的簡單解決方案時仍然很有用。 –

回答

15

根據該鏈路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

+0

您可以直接調用其他(部分)視圖,而無需使用任何控制器。 看到這個鏈接:https://msdn.microsoft.com/en-us/library/system.web.mvc.html.renderpartialextensions.renderpartial%28v=vs.118%29.aspx 所以我不能低估組件視圖的真正優勢:-( –

+0

部分視圖不能有業務邏輯,而在視圖組件中,你可以有業務邏輯 –

+0

我也對此感到困惑@JalpeshVadgama說w/vc你沒有依賴控制器。所以......你依賴於ViewComponent而不是什麼? – BVernon

4

下,您可能希望使用ViewComponent,而不是一個PartialView一個例子:
你需要寫一堆業務邏輯的地方,例如,你可能需要聯繫第三方Web服務,並獲得數據並做一些事情,然後顯示這些信息。

對於上面的場景,確定你可以在局部視圖本身編寫C#代碼,但它的醜陋,你也希望代碼是可測試的。因此,這就是視圖組件可能有用的地方,即,您可以將所有業務邏輯寫入視圖組件並返回視圖(這是類型ViewViewComponentResult)。

查看組件與子操作不同。

+4

你能解釋ViewComponents與Child Actions不同嗎? –

+1

@ErikFunkenbusch他們是相同的,沒有性能缺陷。雖然如果你需要從Ajax中返回一個視圖組件,我會堅持使用一個Action。 – Schotime

+1

在ASP.NET MVC Core中,在視圖中有@注入和依賴注入。您可以將所有業務邏輯和第三方Web服務包裝在一個界面中,並將其作爲局部視圖中的依賴項。這將爲您提供與視圖組件相同的很好分離且可測試的代碼。那麼真的有什麼意義呢? –

2

當您需要局部視圖時,也會使用ViewComponents,該視圖需要在_Layout中調用的模型。爲避免編寫C#代碼在Layout中創建模型,最好使用ViewComponent,通過依賴注入可以使用爲應用程序配置的服務,與控制器相同。

相關問題