背景:html
在MVC中,可能會比較頻繁的使用到子視圖(非分部頁面),例如把頁面切換、頁碼搜索等製做成一個單獨的控件,以實現代碼的複用,減小代碼的冗餘度,同時提升頁面的維護成本。ide
在ASP.NET MVC中子視圖有多種實現方案,好比說一個完整的頁面(非分部頁面)仍然能夠做爲其餘頁面的子視圖。post
如存在如下控制器和動做方法:this
1 public class SubViewTestController : Controller 2 { 3 public ActionResult Index() 4 { 5 return View(); 6 } 7 }
若是在建立視圖時,沒有選擇分部視圖的選項,如圖:spa
視圖的代碼以下:code
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>
該視圖被其餘頁面引用後,顯示的效果仍然是一致的,如圖紅框區域所示:htm
可是在審查元素時發如今頁面中有多個<head>元素,如圖:blog
這樣,在真實的項目中,極可能形成腳本文件相互覆蓋的現象,產生界面效果不正確顯示的現象。it
儘可能在建立子視圖或者公共控件時,選擇建立分部視圖,審查元素如圖:io
引用分部視圖的方法:
1 @Html.Partial("~/Views/Shared/subView.cshtml") 2 @Html.Action("Test")
在寫公共控件時,能夠考慮將控件寫在同一個控制器中,如Common;
又能夠在Controller文件夾下建立一個子文件夾,如sys,和普通的控制器區分開,使項目文件一目瞭然。
注意若是是調用動做方法,是能夠傳遞參數的,以下:
1 @Html.Action("Test",new{para="好的"})