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

背景: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="好的"})

 

 

出處:http://www.cnblogs.com/SharpL/p/4860329.html

相關文章
相關標籤/搜索