ASP.NET MVC 3.0學習系列文章–Razor and ASP.NET MVC 3.0

來源:互聯網
上載者:User

系列文章

ASP.NET MVC 3.0學習系列文章—序

Razor and ASP.NET MVC 3.0

ASP.NET MVC 3.0學習系列文章—Controllers in ASP.NET MVC 3.0

ASP.NET MVC 3.0學習系列文章—Model in ASP.NET MVC 3.0

 ASP.NET MVC
3.0學習系列文章--Dependency Resolution in ASP.NET MVC 3.0

這篇文章主要介紹內容如下:

  

1.Introduction

很多文章裡都有介紹Razor,園子裡也有很多文章介紹。推薦大家看看ScotGu的部落格看看Razor的介紹。

2.Razor’s Goals

a.Easy to use & easy to learn :

  為什麼說Razor容易使用呢》首先是它簡潔的文法,讓我們在寫View頁面時更加容易,另外你用過Razor後或者是使用它作為View Engine來發布你的網站或者系統的話,你會發現Razor的所有方法都單獨的放在了一個dll中,你很容易把你當前的網站 view engine轉化為Razor view engine。比如你可以在你的asp.net webform項目中使用Razor,使用Razor文法來產生一些email發送的模板等。你只要有創造力,相信你會發現Razor的好用。 說Razor容易學習是因為它的文法相當簡單,你只要會C#,並使用過Webform View Engine,很快你就能夠學會Razor。

b.No ties to ASP.NET runtime:

沒錯,Razor不依賴asp.net runtime,它的model都是Dynamic類型的。

c.Smart:

與webform view engine 相比,Razor的文法更加smart,

 

3.Creating A Simpler View

現在我們定義一個簡單的view,並輸入如下內容:

現在我們未定義nicholaspei這個變數,但是還是可以通過編譯的。運行結果:

運行報錯,看提示資訊是nicholaspei在上下文中不存在。 我們再進一步看看Razor是如何啟動並執行,看看下面的詳細錯誤資訊:

是通過C#編譯時間報的異常。

再看看下面更加詳細的代碼執行過程:

在這一行通過write來輸入nocholaspei,編譯器發現nicholaspei未定義,所以拋出異常。

那麼如果我想輸出一個@nicholaspei如何?呢?

修改View如上面代碼所示:

再次運行:

It’s work now…….. 

  

4.Intermingling Code and Markup

C#代碼和HTML代碼混合在一起。

我之前有兩篇文章是介紹Razor文法的,你可以去學習它來看看Razor和html標記如何混合使用。

http://www.cnblogs.com/n-pei/archive/2011/01/13/1934149.html

http://www.cnblogs.com/n-pei/archive/2011/01/15/1936267.html

這裡不再囉嗦。

5.Models and ViewData

在Razor中很多都是Dynamic類型的。

是View的基類和WebViewPage的Generic類。

a.

Model類型是動態。

來個例子說明:

先建立一個類Instructor。定義如下:

  

我們使用HomeController來返回一個IEnumerable的Instructor 集合。。。

先是準備資料:

Index部分的Controller部分:

View部分需要注意下,因為Model是Dynamic類型的。所以View的上面部分代碼如下:

整個View的代碼:

主意@model是動態定義好Model,然後再foreach中使用Model。

運行結果:

還有一點需要注意的是這裡的Html.Raw()是可以顯示html標記的。

b.

在asp.net mvc 3中新增了ViewBag它本身也是個dynamic類型的。

我們可以看看它和ViewData有什麼區別:

Controller部分我們定義如下:

View部分你就可以看出來ViewData和ViewBag的區別了。

ViewDate中listColors是一個object所以我們需要先轉化為List<string>,而在ViewBag中因為ListColors是Dynamic型的,所以可以直接使用。

6.HTML Helpers

目前所有的HTML Helpers都可以在Razor View Engine中使用,例如URL Helpers, AJAX Helpers,當然還在Asp.net Mvc 3中新增了些HTML Helpers。

7.Partial Views

Partial View部分,在Razor中新增了新的Helper方法:Html.Partial(ViewName,model);

我們先定義一個View是Instructor:

修改index.cshtml,使用Html.Partial():

8.Layout Views

在Razor中的Layout.cshtml相當於WebForm中的Master page.

其它的View主要是通過RenderBody()和RenderSection()來指定當前View在母片的顯示位置。

這裡你可以看到有個RenderSection(“header”,required:false)這行代碼,如果不添加required:false,那麼你的header.cshtml這個View必須存在。

9.Startup Code

在View每次渲染前,都會執行_ViewStart.cshtml的代碼:

  

10.Configuration

關於Razor的配置,你可以看到它會在Web.Config中有一個單獨的section來存放Razor的configuration:

如果你在其它例如web form中使用Razor,記得添加這部分配置。

PS: 希望大家提出寶貴的意見來讓我寫的東西協助更多人,讓大家更容易理解和學習asp.net mvc 3。

Nick

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.