最近用MVC專門爲本身作了一個網站,用來記錄文章心情和日記。加上和同事的一些交流感受頗深。因此想把13年買的MVC 4高級編程從新看一遍,記錄一些東西,之後應該用的到。視圖老是被控制器渲染,由於控制器爲視圖提供了要渲染的數據,這裏我高度精簡了視圖的使用技巧。html
指定視圖web
當不指定視圖名稱時,按照約定返回視圖ajax
若是想渲染相同目錄下的其餘視圖,直接指定名稱 view("motIndex")編程
若是指定其餘目錄的視圖,使用view("~/Views/Example/Index.cshtml").爲避免視圖引擎查找機制,需提供視圖的擴展名。佈局
ViewData和ViewBag,強類型性能
數據從控制器到視圖是經過ViewData的ViewDataDictionary,ViewBag是Viewdata的動態封裝器。具體差別能夠查看:TempData,ViewData和ViewBag的比較網站
ViewData包含一個額外的Model屬性,當使用強類型時,後臺會先把值賦給ViewData.Model屬性。對於視圖中常常使用的Model命名空間,較好的辦法就是在Views目錄下web.config中進行聲明。ui
有同事說不建議使用太多ViewData,會影響性能,這個我持保留意見,之前一直不知道頁面上的強對象model就是ViewData裏面的屬性編碼
Razor語法spa
略
HTML編碼
通常只會使用RAW進行編碼,可是對於JS編碼不多用到,之後要注意了
Razor:@Html.Raw()
JS:@Ajax.JavaScriptStringEncode()
佈局
@RenderBody()
@RenderSection("Footer") 和@RenderSection("",required,false) ,子頁面使用方法:@section Footer{}
視圖中沒有定義的section,設置一些默認內容:@if(IsSectionDefined("Footer")){ RenderSection("Footer");}else{ //代碼}
ViewStart
若是多個視圖同用一個佈局頁,會產生冗餘,也很難維護,會先於同目錄下任何視圖執行,也能夠遞歸的應用到子目錄的任何視圖
部分視圖
部分視圖我以爲在MVC中應該重點使用,一個頁面由多個部分視圖組合,部分視圖和強類型Model結合使用起來很是方便。
不通過Controll的部門視圖:Html.RenderPartial("GetName");
須要通過Controll的視圖@Html.RenderAction("Datagrid", "DataList", new { area = "Common" });ajax加載: $("xx").load('/Home/Index')