1. 程式人生 > >如何利用子視圖(非分部頁面)

如何利用子視圖(非分部頁面)

comm ont layout show display closed sha 減少 分開

背景:

在MVC中,可能會比較頻繁的使用到子視圖(非分部頁面),例如把頁面切換、頁碼搜索等制作成一個單獨的控件,以實現代碼的復用,減少代碼的冗余度,同時提高頁面的維護成本。

在ASP.NET MVC中子視圖有多種實現方案,比如說一個完整的頁面(非分部頁面)仍然可以作為其他頁面的子視圖。

如存在以下控制器和動作方法:

技術分享圖片
1     public class SubViewTestController : Controller
2     {
3         public ActionResult Index()
4         {
5             return
View(); 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

如何利用子視圖(非分部頁面)