【MVC】VS經常使用技巧

1,在VS2010中,選中指定的代碼段,能夠拖拽到工具箱中,造成標籤,之後還想書寫相似的代碼,雙擊鼠標便可。html

2,在VS2012中,能夠在註釋上標註//TODO:我是註釋數據庫

這樣,註釋就會出如今任務列表中,一些關鍵經常使用的方法/字段/關注點,經過這種方式快速定位。如圖:瀏覽器

 

3,在VS2012中是不支持MVC1.0和MVC2.0的,若是要開啓低版本MVC項目的話,必須使用VS2010服務器

4,_ViewStart.cshtml文檔會在全部其餘全部視圖(VIEW)運行以前載入。併發

發現使用佈局頁的視圖沒有完整的HTML結構,是由於相似的視圖都做爲一部分被裝載到佈局頁中,由_ViewStart.cshtml文檔指定,默認爲_Layout.cshtml。工具

5,能夠在視圖頁面的頭部定義ViewBag的臨時變量,而沒必要是在Controller的Action方法中定義,如圖:佈局

 

6,在瀏覽網頁時,若是隻是指定Controller,而不指定Action,而控制器和動做方法均是必須的路由參數,這時將去RegisterRoutes()方法中取默認的Action值,如圖:post

上圖中默認的方法爲Index,也就是說當咱們輸入.../example的時候,會自動路由爲.../example/index網站

 

7,若是在View中定義了@model模型聲明,那麼經過Controller傳進View的模型類型必須與View中所聲明的類型兼容,不然將產生異常,如圖:url

 

8,在view文檔(也就是cshtml中),<head>標籤中的<title>標籤指標題,如圖:

 

9,以下代碼:

<p>
@Html.ActionLink("Create New", "Create")
</p>

建立連接,由於沒有指定連接的控制器名稱,因此連接到當前控制器的Create動做方法,顯示的文本爲「Create New"。

 

10,HTTP GET POST

HTTP GET負責顯示編輯的窗體,HTTP POST負責實際更新數據庫裏的屬性。

 

11,雜:

@Html.HiddenFor(model => model.ID)   生成HTML窗體的隱藏域

HTML註釋符號:<!--我是被註釋的內容-->

在ASP.NET MVC中不建議使用Request對象和Response對象

不要在視圖中撰寫過多的程序邏輯,實現「關注點分離」

網址路由在MVC中的做用:

一、比對瀏覽器傳過來的HTTP請求,對應到適當的控制器和Action進行處理;

二、決定MVC輸出什麼樣的響應給瀏覽器;

 

12,網址路由

好比:單擊「主頁」連接,瀏覽器將URL封包,併發送HTTP要求到服務器上,IIS接收到這個HTTP封包,轉給網址路由模塊負責將HTTP請求交由那個HTTPHandler處理,對於MVC來講,天然是轉交給MVCHandler處理,這纔會進入MVC的運行聲明週期。

  全部ASP.NET Web程序的入口點均是Application_Start()事件,其中 RouteConfig.RegisterRoutes(RouteTable.Routes);

  代碼中的Routes是一個公開的靜態變量,用來保存全部網址路由的規則集合,爲RouteCollection類型的變量。

  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    代碼中,表示不要經過網址路由處理,即若是從瀏覽器傳遞過來的網址,匹配該規則,將由IIS的其餘Http模塊處理,將不會進入ASP.MET MVC的生命週期。

  url: "{controller}/{action}/{id}"

  代碼中URL樣式包含三個路由參數,分別是Controller/Action/ID,注意該URL樣式不能以‘/'開頭。

  defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

  默認值。當對比不到HTTP請求的網址時,會嘗試帶入代碼中的默認值。

  當接收到HTTP請求時,將從上而下逐條比對,直到找到符合的網址格式。

  注意ID不算在網址路由之中,屬於QueryString的部分。

1                 routes.MapRoute(
2                 name: "Default",
3                 url: "{controller}/{action}/{id}",
4                 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
5             );        

  上述代碼中,MapRoute使用的是具名參數。

13,MVC的運行聲明週期

     網址路由比對-->運行Controller與Action-->運行View並回傳結果

14,MVC在比對網址路由時,默認狀況下,若是查找到網站實體目錄中查找相應的實體文檔,會自動略過全部網址路由比對。

   若是想打破這種默認行爲,那麼在MVC程序的入口Application_Start()中,添加以下代碼:

  RouteTable.Routes.RouteExistingFiles = true;

  當網址路由比對成功時,MVC默認交由MvcHandler處理。

 

 


 

1,在ASP.NET MVC中,路由機制特別碉堡,直接對應於動做方法。沒有必要給每個動做方法添加視圖,當視圖返回View時,路由系統會自動尋找指定目錄下的視圖資源。

1 public ViewResult AutoProperty()
2 {
3        Product p = new Product();
4        p.Name = "Chris";
5        return View("Result", (object)String.Format("你是:{0}", p.Name));
6 }

如AutoProperty時HomeController中的動做方法,並無指定視圖,可是在返回視圖的時候,會自動在Views\Home下查找指定的視圖資源。

Url爲~/Home/AutoProperty。一樣驗證了URL與動做方法的一致性。

 

2,@HTML

 @Html.DisplayNameFor(model => model.Email)顯示屬性名稱,在定義屬性時能夠設置DisplayName屬性來修改顯示的名稱。

如:

1         [DisplayName("電子郵件地址")]
2         public string Email { get; set; }

這樣,@~處將不顯示「Email」,而是顯示「電子郵件地址」。

@Html.DisplayFor(modelItem => item.Name),顯示的是特定Item的Name值,如:SharpL

 

@Html.ActionLink("Edit", "Edit", new { id=item.ID }) ,ActionLink用來輸出超連接,第一個參數指超連接的顯示文本,第二個參數指Action,第三個參數爲路由參數。

 

@Html.LabelFor(model => model.Name),特定字段的顯示名稱,對於Email來講任然會顯示「電子郵件地址」,因此和DisplayNameFor相似。

兩者存在細微的差別,在輸出的HTML中,LabelFor輸出的內容包含<label>標籤,而DisplayFor只會輸出屬性的顯示名稱。如圖:

1         <div class="editor-label">
2             <label for="Email">電子郵件地址</label>
3         </div>

 

 

出處:

http://www.cnblogs.com/SharpL/p/4587010.html

http://www.cnblogs.com/SharpL/p/4549632.html

相關文章
相關標籤/搜索