ASP.NET MVC 3.0学习系列文章--Razor and ASP.NET MVC 3.0
系列文章
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
?
轉載于:https://www.cnblogs.com/n-pei/archive/2011/01/23/1942711.html
總結
以上是生活随笔為你收集整理的ASP.NET MVC 3.0学习系列文章--Razor and ASP.NET MVC 3.0的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 代码练习中的bug及修改方法
- 下一篇: step3 . day8数据结构之算法