Partial View 顧名思義就是Html代碼片段,應用於此HTML代碼多次被頁面加載時使用。(類似於WebForm程序中的用戶控件)
注:PartialView和正常的View頁面在訪問時沒有任何區別
一、PartialView的創建
在Views文件夾下,選中你要添加PartialView的文件右擊=>添加=>點擊View=>彈出添加View窗口(和正常添加View頁面是一樣的),在窗口中勾選【創建分部視圖】下面就OK了。
二、加載分部視圖
1、通過Ajax方式
Index頁面代碼
1 @section scripts{ 2 <script type="text/javascript"> 3 window.onload = function () { 4 document.getElementById("btnLoadPart").onclick = function () { 5 var xhr = new XMLHttpRequest(); 6 xhr.open("get", "/Home/LoginPart", true);//訪問控制器類Home中的LoginPart方法 7 xhr.setRequestHeader("If-Modified-Since", 0);//清除緩存 8 xhr.onreadystatechange = function () { 9 if (xhr.readyState == 4 && xhr.status == 200) 10 { 11 var htmlNew = xhr.responseText; 12 document.getElementById("divCon").innerHTML = htmlNew; 13 } 14 }; 15 xhr.send(null); 16 }; 17 }; 18 </script> 19 } 20 21 <input type="button" value="請求分部視圖" id="btnLoadPart" /> 22 <div id="divCon"></div>
分部視圖控制器類(Home)中的LoginPart方法代碼
1 /// <summary> 2 /// 加載 分部視圖的 Action 方法 3 /// </summary> 4 public ActionResult LoginPart() 5 {
6 return PartialView();//PartialView方法不會加載布局頁面【_ViewStart.cshtml】,View()方法會加載布局頁面【_ViewStart.cshtml】 7 }
2、View直接加載分部視圖
①通過@{Html.RenderPartial("分部視圖的View頁面路徑【~/Views/Home/LoginPart.cshtml】");} //無返回值
②通過@Html.Partial("分部視圖的View頁面路徑【~/Views/Home/LoginPart.cshtml】")//返回值類型為MvcHtmlString的字符串
③通過@{Html.RenderAction("在同一個控制器類中可以直接寫方法名【LoginPart】");}//無返回值
④通過@Html.Action("在同一個控制器類中可以直接寫方法名【LoginPart】")//返回值類型為MvcHtmlString的字符串
TempData傳值:一次請求,通過Html.Action或Html.RenderAction請求頁面時,Action方法之間的傳值
如圖: