細數ASP.NET MVC框架的7大頂級功能

來源: IT168  發布時間: 2010-12-05 17:30  閱讀: 3526 次  推薦: 0   原文鏈接   [收藏]  

  ASP.NET MVC框架對構建ASP.NET應用程序的開發人員來說的確很有吸引力,因為它的松耦合特征使項目管理變得更加輕松,ASP.NET MVC最初由微軟隨.NET framework 3.5 SP1一起引入(即ASP.NET MVC 1.0),現在.NET Framework 4.0和Visual Studio 2010默認支持第二個版本,即ASP.NET MVC 2.0,在這篇文章中,我將帶你領略一下ASP.NET MVC框架的7個頂級功能。

  所有概念都圍繞下面三個主要組件展開:

   · 模型(用M表示):模型是負責表現底層數據庫模式的業務對象,容納MVC應用程序的數據/狀態。

   · 視圖(用V表示):視圖指的是應用程序的UI,在ASP.NET MVC應用程序中,它通常就是一個.aspx和.ascx文件。

   · 控制器(用C表示):控制器是ASP.NET MVC框架應用程序的核心,它負責給客戶端呈現適當的視圖,執行相關的行為方法,從模型獲取數據,然后填充到視圖,或從視圖獲取數據,然后更新模型等。

  圖1展示了MVC模式三大組件之間的相互關系。

  圖 1 MVC框架的三個組件

  1、打通并行開發的任督二脈

  當你在Visual Studio 2010中創建ASP.NET MVC應用程序時,你會發現在Visual Studio IDE的解決方案下自動創建了Controller(控制器),View(視圖)和Model(模型)三個文件夾,模型,控制器和視圖必須分離成不同的文件,圖2顯示了一個解決方案資源管理器屏幕截圖。

  圖 2 ASP.NET MVC應用程序解決方案資源管理器樹形結構

  在大多數組織中,有單獨負責界面設計的UI團隊,負責編寫核心.NET代碼的開發團隊,也有數據團隊(管理數據模型),這種松耦合組織架構的主要優點是,允許不同的團隊在自己的領域工作,相互依賴性很低,例如,對于UI團隊,他們只管視圖,對于背后隱藏的代碼完全不用關心,那些事情有開發團隊來處理。

  因此,ASP.NET MVC框架降低了并行開發的復雜性。  

  2、URL路由,控制器響應請求

  和一般的ASP.NET應用程序不一樣,ASP.NET MVC應用程序請求不是由磁盤上的文件,如.aspx文件產生的,而是由控制器直接產生的,下面是一個請求URL格式示例:

 
http://localhost:34299/<Controller>/<ActionMethodName>

  入站請求將會觸發URL指定控制器的ActionMethod(行為方法),例如,請求將被路由到相應控制器的行為方法,該方法將負責呈現結果視圖,為什么和開發人員有關系呢?下面就是答案:

   · 和REST風格的URL結構類似,這也導致用戶可以輕易操作URL。

   · 使應用程序對搜索引擎友好,在現代Web應用程序開發中,這被認為是很重要的。

  是什么讓這個URL驅動架構成為可能呢?秘密就在global.asax文件中,看看下面的代碼:

 
public class MvcApplication : System.Web.HttpApplication
{

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute(
"{resource}.axd/{*pathInfo}");

routes.MapRoute(

"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                                 // Parameter defaults
);
}

protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
}

  在上面的代碼中,你可能已經注意到如何注冊URL路由,以及如何指定默認值。

  3、支持測試驅動開發

  由于MVC架構是松散的,構建單元測試用例變得很簡單,它使測試驅動開發成為可能,例如,如果你有一個正常的.aspx.cs頁面,你想為它建立單元測試用例,復雜度很高,因為:

  ·  你必須為你的頁面代碼隱藏類創建實例;

   · 隱藏代碼將指向ASP.NET控件;

   · 為事件(如GridView_RowDataBound)創建單元測試用例很困難。

  在MVC模式下,文件背后沒有任何代碼,也沒有UI元素引用,使任務變得非常容易,你需要做的僅僅是指向控制器的ActionMethod,點擊右鍵選擇“創建單元測試”,如圖3所示。

  圖 3 創建單元測試

  4、HTML輔助方法的可用性

  ASP.NET MVC視圖是由HTML驅動的,你不用使用任何ASP.NET服務器控件,ASP.NET MVC為此專門提供一堆HTML輔助方法,使視圖開發任務變得更簡單,最爽的是開發人員可以獲得這些HTML輔助方法的100%智能提示,圖4顯示了一個示例屏幕截圖。

  圖 4 HTML輔助方法智能提示

  在上面的屏幕截圖中,你可能注意到了復選框(checkbox)和文本框(textbox)等部分的Lambda表達式,創建輔助方法指定控件是為注入模型的特定字段創建的。 

  5、ASP.NET MVC CRUD實現:腳手架可用性

  在日常的應用程序開發中,開發人員花在寫代碼上的時間是最多的,但大多數時候都是重復做數據項的創建(C)、讀取(R)、更新(U)和刪除(D)操作,ASP.NET MVC框架為CRUD操作提供了一個腳手架,當你創建控制器時,你可以選擇讓框架幫你創建好CRUD操作的行為方法,如圖5所示。

  圖 5 為CRUD操作添加行為方法

  下面是生成的代碼示例:

 
public class MyController : Controller
{

//
// GET: /My/
public ActionResult Index()
{

return View();
}

//
// GET: /My/Details/5
public ActionResult Details(int id)
{

return View();
}

//
// GET: /My/Create
public ActionResult Create()
{

return View();
}

//
// POST: /My/Create
[HttpPost]
public ActionResult Create(FormCollection collection)
{

try
{
// TODO: Add insert logic here
return RedirectToAction("Index");
}

catch
{
return View();
}
}

//
// GET: /My/Edit/5
public ActionResult Edit(int id)
{

return View();
}

//
// POST: /My/Edit/5
[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{

try
{
// TODO: Add update logic here
return RedirectToAction("Index");
}

catch
{
return View();
}
}

//
// GET: /My/Delete/5
public ActionResult Delete(int id)
{

return View();
}

//
// POST: /My/Delete/5
[HttpPost]
public ActionResult Delete(int id, FormCollection collection)
{

try
{
// TODO: Add delete logic here
return RedirectToAction("Index");
}

catch
{
return View();
}
}
}

  6、模板功能

  模板功能是ASP.NET MVC 2.0版本才引入的新功能,此功能允許你創建一個共享的局部視圖,可以在其它視圖中直接使用它,用于編輯模板功能的HTML輔助方法有:Html.EditorFor,Html.Editor和 Html.EditorForModel。

  7、使用數據注釋屬性進行驗證

  ASP.NET MVC框架提供了一些數據注釋屬性用于數據驗證,這些屬性用來裝飾模型暴露的字段,下面是其中一部分屬性:

   · Required

   · DisplayName

   · StringLength

   · ScaffoldColumn

   · Range等

  小結

  我希望這篇文章列舉的ASP.NET MVC框架7個頂級功能是實至名歸的,其中模板和數據驗證功能有點廣泛,我將在以后的文章中進行詳述,當然歡迎你在本文后面的評論中發表你的高見。

0
0
 
標簽:MVC
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()