天天看點

ASP.NET MVC4 亂七八糟羅列

一、ASP.NET MVC概述

1、什麼是ASP.NET MVC?

ASP.NET MVC是微軟官方提供的MVC模式編寫ASP.NET Web應用程式的一個架構。

是微軟繼ASP.NET WebForm後的又一種開發方式,而非替代方式。

2、官方網站和源碼網站?

3、ASP.NET MVC的特點?

1)、分離任務

2)、可擴充

3)、強大的URL重寫(路由)機制

4)、相容ASP.NET現有的技術

5)、開源

4、ASP.NET MVC的優點?

1)、通過把項目分為model、view和controller,使得複雜項目更加容易維護。

2)、沒有使用viewstate和伺服器表單控件,可以更友善的控制應用程式的行為。

3)、應用程式通過controller來控制程式請求,可以提供豐富的url重寫。

5)、在團隊模式下表現更加出衆。

5、為什麼我們需要ASP.NET MVC?

1)、關注點分離

2)、高擴充性

3)、更好的可測試性

4)、更好的URL重寫

5)、更好的性能

6)、更加靈活的HTML代碼控制

...

6、Razor視圖引擎?

Razor視圖引擎是對以代碼為焦點的方法實作,其特點如下:

1)、簡潔、富于表現、流暢,盡量減少編寫一個視圖模闆所需要敲入的字元數,實作快速流暢的程式設計工作。不必為了明确标記出服務子產品的開始和結束而中斷程式設計,Razor解析器能從你的代碼中自動推斷出來。

2)、易于學習,熟悉現有的程式設計語言和HTML技能就能快速學會。

3)、可以在任何文本編輯器中工作。

4)、VS IDE對其增加了智能提示。

5)、支援單元測試。

ASP.NET MVC4 亂七八糟羅列

7、ASP.NET MVC請求處理過程?

ASP.NET MVC4 亂七八糟羅列

8、ASP.NET MVC3與MVC4 知識點?

ASP.NET MVC4 亂七八糟羅列
ASP.NET MVC4 亂七八糟羅列

9、ASP.NET MVC與Web Form差別?

ASP.NET MVC4 亂七八糟羅列

二、ASP.NET MVC程式設計要點

1、@Html.DisplayNameFor(mode=>model.Name),預設會直接輸出屬性名稱,如果屬性名稱想要顯示中文,可在類屬性定義一個System.ComponentModel下DisplayName屬性,如:

[DisplayName(“名稱”)]

public string Name {get;set;}

使用Razor文法輸出屬性,預設所有資料都會使用HTML編碼(HtmlEncode)輸出,這是出于程式安全考慮,可避免網頁遭受跨網站腳本攻擊(Cross-Site ScriptingAttach)。

2、@model IEnumerable<命名空間.類名>

3、@{ ViewBag.Title=”頁面标題”;}

4、@Html.ActionLink(“Create New”,”Create”)

5、@Html.ActionLink(“Edit”,”Edit”,new{id=item.Id})

用來輸出超連結,第一個參數是連結顯示文字,第二個參數是連結的目的Action名稱,第三個參數代表路由參數id。這樣MVC在輸出超連結時,會加上要傳給下一頁的路由參數,MVC知道傳入{controller}與{action}路由參數外,還給予{id}路由值。

Controller裡有兩個同名的方法,一個給HTTP GET方法用的,另一個是給HTTP POST方法用的。有HttpPost屬性的會告知MVC架構此動作隻會接收HTTP POST過來的資訊,這個屬性稱為動作過濾器(Action Filter)或者動作選擇器(Action Selector)。

// GET: /Home/Create       

public ActionResultCreate()

{

   return View();

}

// POST: /Home/Create

 [HttpPost]

public ActionResultCreate(Collectorcollector)

   if (ModelState.IsValid)

   {

          db.Collectors.Add(collector);

          db.SaveChanges();

          returnRedirectToAction("Index");

    }

returnView(collector);

6、Html.BeginForm()方法,該輔助方法将會輸出<form>标簽,而且必須以using包起來,如此便可在using程式代碼最後退出後,讓MVC補上</form>标簽。

@using (Html.BeginForm()) {}

@Html.ValidationSummary(true)用來顯示當表單域發生驗證失敗時,顯示的錯誤消息。

@Html.LabelFor(model=>model.Name)用來顯示特定字段的顯示名稱,會輸出包含<label>标簽的域名,它與@Html.DisplayNameFor(model=>model.Name)的差別如下圖所示:

ASP.NET MVC4 亂七八糟羅列

@Html.EditorFor用于輸出表單域

@Html.ValidationMessageFor用于顯示字段驗證的錯誤消息。

在Model類中,需要必填屬性上加一個System.ComponentModel.DataAnnotations命名空間下的Required屬性,如下所示:

[Required]

這是MVC引入了一種Unobtrusive的JavaScript開發風格。

跳轉Action,目前Action名為Create,文法如下:

return RedirectToAction(“Index”);

ModelState.IsValid用來判斷在模型(Model)的驗證狀态是否有效,如果驗證都沒有問題,就可以利用Entity Framework标準的方法将資料寫入資料庫。

@Html.HiddenFor(model=>model.ID),該輔助方法主要用來生成HTML窗體的隐藏域。

路由Routing---網址路由,主要有2個目的:

1)、比對通過浏覽器傳過來的HTTP請求。

2)、響應适當的網址給用戶端浏覽器。

用戶端請求->URI Routing->Route->RouteHandler->HttpHandler

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

所有*.axd結尾的網址通常都代表着其中一個HttpHandler,如在ASP.NET WebForm中常用的WebResource.axd就是其中一個常見的HttpHandler。為了不讓MVC把這些*.axd的HttpHandler視為MVC運作起來,是以必須添加這條IgnoreRoute規則,将其排除在MVC運作生命周期之外。