View()
方法可以加載部分視圖。查看()與PartialView()
是View()
和PartialView()
之間的不同之處在於View()
可以加載視圖和局部視圖和PartialView()
只能加載局部視圖?
View()
方法可以加載部分視圖。查看()與PartialView()
是View()
和PartialView()
之間的不同之處在於View()
可以加載視圖和局部視圖和PartialView()
只能加載局部視圖?
由視圖引擎決定是否要處理與常規視圖不同的部分視圖。
例如,在WebFormViewEngine中沒有區別。
在新的ASP.NET MVC 3 RazorViewEngine中存在一些差異。只有常規視圖纔會運行「_viewstart.cshtml」頁面,因爲它們適用於設置佈局頁面等內容。
Viewstart支持和佈局支持(單獨)加上小的異常差異:http://completedevelopment.blogspot.com/2014/01/is-there-really-no-difference-between.html – 2014-01-12 07:33:54
另外我覺得'PartialView() '會查找ViewEngine的PartialViewLocationFormats屬性中指定的視圖位置,而View()將使用'ViewLocationFormats'屬性。 – 2014-02-27 23:45:44
@MaksimVi。這是正確的,除了在MVC的默認視圖引擎中,位置在部分視圖和「常規」視圖之間都是相同的。但是,如果您對它們進行了不同配置或使用了不同的視圖引擎,那麼它們肯定會有所不同。 – Eilon 2014-03-03 23:45:08
如果您有Index.aspx
和Index.ascx
對於具有這兩種方法的同一控制器可能有助於消除歧義。但我同意一般View
是比較常用的。而且PartialView
也可以用來加載完整的視圖,只是它的語義錯誤。
我很確定WebFormViewEngine對於普通視圖和部分視圖都使用完全相同的文件擴展名,所以這可能不會幫助您消除歧義。 – Eilon 2010-11-17 23:34:55
Eilon不正確。部分視圖是.ascx,視圖是.aspx – Chev 2010-11-18 00:06:03
@Chevex如果您查看WebFormViewEngine的「ViewLocationFormats」和「PartialViewLocationFormats」集合,您將看到它們是相同的。雖然召喚對全視圖使用.aspx,部分視圖使用.ascx,但視圖引擎將它們視爲相同。 – marcind 2010-11-18 00:31:29
我覺得最大的區別是關於使用_Layout
頁面:)
+1,因爲這是IMO真正最重要的事實!嘗試使用例如'@ Html.Action(「SideMenu」,「Menu」)''這樣:'public ActionResult SideMenu(){return View(); }'。你會想知道爲什麼它用'RenderBody()'渲染到'_Layout'中。返回'PartialView()',因爲它不是通過'RenderBody()'呈現給'_Layout'。 – dee 2016-12-20 06:35:28
這是一個拗口令? – Lorenzo 2010-11-17 23:14:59