Razor 不是編程語言。它是服務器端標記語言。
Razor 是一種允許您向網頁中嵌入基於服務器的代碼(Visual Basic 和 C#)的標記語法
當網頁被寫入瀏覽器時,基於服務器的代碼能夠創建動態內容。在網頁加載時,服務器在向瀏覽器返回頁面之前,會執行頁面內的基於服務器代碼。由於是在服務器上運行,這種代碼能執行復雜的任務,比如訪問數據庫。
Razor在減少代碼冗余、增強代碼可讀性和VS智能感知方面,都有着突出的優勢。 Razor一經推出就深受所有ASP.Net開發者的喜愛。
Razor 使用的語法與 PHP 和 ASP 相似。
ASP中<% %>=@
語法規則
Razor 代碼封裝於 @{ ... } 中
行內表達式(變量和函數)以 @ 開頭
代碼語句以分號結尾
字符串由引號包圍
C# 代碼對大小寫敏感
C# 文件的擴展名是 .cshtml
添加視圖的時候選擇Razor視圖引擎就可以
用法:
@{ var name = "Word!!!!";} @for (int i = 0; i < 3; i++) { <h1>Hello @name</h1> } @if (true) { <h1>Hello @name</h1> }
如何工作:
當服務器讀取這種頁面后,在將 HTML 頁面發送到瀏覽器之前,會首先運行 Razor 代碼。這些在服務器上執行的代碼能夠完成瀏覽器中無法完成的任務,比如訪問服務器數據庫。服務器代碼能夠在頁面被發送到瀏覽器之前創建動態的 HTML 內容。從瀏覽器來看的話,由服務器代碼生成的 HTML 與靜態 HTML 內容沒有區別。
獲取用戶輸入: <label for="text1">FN</label> <input type="text" name="text1" /> for 標簽和文本關聯在一起,當鼠標點擊標簽時會在文本框在聚焦
Razor數據裝換
循環:
創建名為Loop的Action 定義一個集合,然后通過Razor遍歷出來
Public ActionResult Loop() {
//ViewBag是動態類型 ViewBag.Loop=new List<string>{"張三","李四","王五"}; return View(); }
Loop.cshtml代碼:
注意:代碼中允許存在標簽與代碼混編的形式,Razor在智能感知方面有着非常優秀的表現。
動態(Dynamic)類型: 可以存儲任何類型的值在動態數據類型變量中。這些變量的類型檢查是在運行時發生的
ViewData是字典類型,賦值方式用字典方式,通過key值讀取對應的value, ViewData["myName"]
2、ViewBag是動態類型,使用時直接添加屬性賦值即可 ViewBag.myName
3、ViewBag和ViewData只在當前Action中有效,類似於ViewState(WebForm中頁面上的對象…)
4、ViewData和ViewBag 中的值可以互相訪問,因為ViewBag的實現中包含了ViewData
Action:
View: