ASP.NET MVC4 亂七八糟羅列

暖楓無敵發表於2016-09-19


一、ASP.NET MVC概述

1、什麼是ASP.NET MVC?

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

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

 

2、官方網站和原始碼網站?

官方網站:http://www.asp.net/mvc

原始碼網站:http://aspnet.codeplex.com/wikipage?title=MVC

 

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重寫。

4)、支援測試驅動開發,英文全稱Test-Driven Development,簡稱TDD,是一種不同於傳統軟體開發流程的新型的開發方法。它要求在編寫某個功能的程式碼之前先編寫測試程式碼,然後只編寫使測試通過的功能程式碼,通過測試來推動整個開發的進行。這有助於編寫簡潔可用和高質量的程式碼,並加速開發過程。

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)、支援單元測試。


 

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

 

 

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

 


 

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

 

 

 

二、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)的區別如下圖所示:

 

@Html.EditorFor用於輸出表單域

@Html.ValidationMessageFor用於顯示欄位驗證的錯誤訊息。

 

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

[Required]

public string Name {get;set;}

這是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執行生命週期之外。

 

 

相關文章