Razor引擎與業面元素組織更加清晰,沒有過濾的<%%>標題,它不再需要什么結束標記,使用@就可以實現一個完整的綁定,閉合<%%>這件事人家razor已經為咱做好了,呵呵。
Razor模板頁:它使我們不用在使用master模板了,而razor模板引擎代碼更簡潔,清晰,下面我們來具體說一下在模板中的出現的元素:
一 @Url.Content:是可以加載CSS和JS等文件,使用Url.Content可以為URL地址進行統一的管理和設置。
1 <head> 2 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 3 <title>@ViewBag.Title</title> 4 <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 5 <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script> 6 </head>
二 @RenderSection("Head", false):在模板頁中我們會定義一些全局性的CSS,JS等文件,而與具體頁面相關的CSS和JS文件及代碼,我們可以保留在@RenderSection("Head", false)中,它能夠
讓頁面通過@section Head{}的形式,將個性化的代碼呈現,其中參數false表示,具體頁面可以不去實現這個section Head塊。
1 <body> 2 @RenderSection("Head", false); 3 <!-- 頁面中可以沒有Head節點--> 4 <div class="page">
調用:
1 @section Head{ 2 <script> 3 alert("Hello MVC3"); 4 </script> 5 }
三 @Html.Partial("_LogOnPartial"):分部視圖,事實上就是MVC2中的ASCX視圖,一些公用模塊可以由它來呈現
1 <div id="logindisplay"> 2 @Html.Partial("_LogOnPartial") 3 </div>
四 @RenderBody():用來存儲具體的頁面內容,頁面所有正文內容都被自己放到了@RenderBody()容器里
1 <div id="main"> 2 @RenderBody() 3 <div id="footer"> 4 </div> 5 </div>
五 @RenderPage("~/Views/Shared/Foot.cshtml") :引入一個URL地址的頁面
六 _ViewStart.cshtml文件,它會在建立view時自己綁定到view中去,當然在view里通過下面語句設置自己的模板頁:
@{ ViewBag.Title = "Test"; //設置頁面標題 Layout = "~/Views/Shared/_GreenLayout.cshtml"; //設置頁面模板,如果不設置本屬性則使用_ViewStart.cshtml里的模板頁 }
七 頁面Model綁定更加直觀和清晰
1 @model TEstMv3.Models.PersonLogOn 2 @{ 3 ViewBag.Title = "LogOn"; 4 }
八 ViewBag更靈活,它是MVC3中新加入的成員,與ViewData和TempData不同,它是一個dynamic類型的對象,並且內部規定了一些固定的屬性如:ViewBag.Title它就代碼頁面
的標題,MVC3會自動把它綁定到<title></title>標記中。看它是如何實現的:
1 [Dynamic] 2 public object ViewBag 3 { 4 [return: Dynamic] 5 get 6 { 7 Func<ViewDataDictionary> viewDataThunk = null; 8 if (this._dynamicViewData == null) 9 { 10 if (viewDataThunk == null) 11 { 12 viewDataThunk = () => this.ViewData; 13 } 14 this._dynamicViewData = new DynamicViewDataDictionary(viewDataThunk); 15 } 16 return this._dynamicViewData; 17 } 18 }
從代碼中我們不難發現,ViewBag不公是一個dynamic類型,而且它還把當前ViewData里的內容也追加了過來,那下面的使用是正確的,呵呵。
1 public ActionResult Index() 2 { 3 ViewData["author"] = "張占嶺"; 4 }1 @ViewBag.author //比ViewData["author"]這種形式更簡
在頁面上直接這樣輸出:
1 @ViewBag.author //比ViewData["author"]這種形式更簡潔
下一講,將介紹在具體的頁面中程序表現上的語法,介請收看。