1.首先看一下它們的對等關系
@Html.Partial 對應 @{Html.RenderPartial();}
@Html.Action 對應 @{Html.RenderAction();}
以上相互對應的語句,它們實現的功能是一樣的,不同的就是寫法,
2.Action加載方法的視圖,執行 Controller → Model → View 的順序,然后把產生的頁面帶回到原來的View中再回傳。而Partial直接加載視圖文件內容
3.@Html.Partial可以直接提供用戶控件名作為參數,而Html.Action需要有對應的Action,在Action內部返回PartailResult(即retun PartialView())。
如:下面例子可以說明@Html.Partial的用法
public ActionResult Index() { string[] txtArry = { "1", "2", "3" }; ViewData["txt"] = "歡迎"; return View(txtArry); }
index.cshtml頁面
<body> <div> @*這里應該顯示:1*@ @Model[0] </div> <div> @*調用msg1.cshtml*@ @Html.Partial("msg1") </div> </body>
如果@Html.Partial("msg1")沒有傳具體的值,那么它就會默認把index里的Model值傳過去,如果有具體的參數,那么msg1里的Model值就是為傳過來的參數值
如:@Html.Partial("msg1",(object)Model[1])
msg1.cshtml頁面
<body> <div> @Model[0]+@ViewData["txt"] </div> </body>
總結:用@Html.Partial(頁面),那么這個頁面的里的數據源是“調用頁面:index.cshtml”給的,只要index頁面可以接受到的viewdata那么msg1就可以接受,index頁面就是msg1頁面的衣食父母。最后根據不同的用途來選擇吧