如何利用子視圖(非分部頁面)
阿新 • • 發佈:2018-05-24
comm ont layout show display closed sha 減少 分開
背景:
在MVC中,可能會比較頻繁的使用到子視圖(非分部頁面),例如把頁面切換、頁碼搜索等制作成一個單獨的控件,以實現代碼的復用,減少代碼的冗余度,同時提高頁面的維護成本。
在ASP.NET MVC中子視圖有多種實現方案,比如說一個完整的頁面(非分部頁面)仍然可以作為其他頁面的子視圖。
如存在以下控制器和動作方法:
1 public class SubViewTestController : Controller 2 { 3 public ActionResult Index() 4 { 5 returnView(); 6 } 7 }
如果在創建視圖時,沒有選擇分部視圖的選項,如圖:
視圖的代碼如下:
1 @{ 2 Layout = null; 3 } 4 5 <!DOCTYPE html> 6 7 <html> 8 <head> 9 <meta name="viewport" content="width=device-width" /> 10 <title>Index</title> 11 </head> 12<body> 13 <div> 14 我是單獨的視圖 15 </div> 16 </body> 17 </html>
該視圖被其他頁面引用後,顯示的效果仍然是一致的,如圖紅框區域所示:
但是在審查元素時發現在頁面中有多個<head>元素,如圖:
這樣,在真實的項目中,很可能造成腳本文件相互覆蓋的現象,產生界面效果不正確顯示的現象。
盡量在創建子視圖或者公共控件時,選擇創建分部視圖,審查元素如圖:
引用分部視圖的方法:
1 @Html.Partial("~/Views/Shared/subView.cshtml") 2 @Html.Action("Test")
在寫公共控件時,可以考慮將控件寫在同一個控制器中,如Common;
又可以在Controller文件夾下創建一個子文件夾,如sys,和普通的控制器區分開,使項目文件一目了然。
註意如果是調用動作方法,是可以傳遞參數的,如下:
1 @Html.Action("Test",new{para="好的"})
出處:http://www.cnblogs.com/SharpL/p/4860329.html
如何利用子視圖(非分部頁面)