ASP.NET MVC5 + EF6 入門教程 (6) View中的Razor使用

ASP.NET MVC5 + EF6 入門教程 (6) View中的Razor使用
原文:ASP.NET MVC5 + EF6 入門教程 (6) View中的Razor使用

文章來源:?Slark.NET-博客園 http://www.cnblogs.com/slark/p/mvc-5-ef-6-get-started-model.html?

上一節:ASP.NET MVC5 + EF6 入門教程 (5) Model和Entity Framework

下一節:ASP.NET MVC5 + EF6 + Bootstrap3 (7) Bootstrap的柵格系統

源碼下載:點我下載

一、Razor簡介

在解決方案資源管理器中查看Views文件夾下的文件,如下圖所示。

文件的后綴名都是.cshtml。這是什么文件呢?顧名思義,cshtml = cs + html,就是一個包含C Sharp(C#)代碼的HTML文件。

既然文件包含原本HTML文件里的客戶端代碼和C#這樣的服務器端代碼,我們就得想個辦法區分這兩種代碼。這里我們就需要Razor。

Razor是什么?一個視圖引擎?期待哪位專家可以給我一個高大上的定義。

在我看來,Razor就是區分服務器端代碼和其它代碼的一種標記語言。

二、Razor注釋

為了更好的觀察運行結果,這里我們禁用掉模板。打開Views文件夾下的_ViewStart.cshtml文件。注釋掉其中所有代碼,如下圖所示。

@*@{Layout = "~/Views/Shared/_Layout.cshtml";
}*@

從上面可以看出cshtml文件中的多行注釋就是在第一行開頭寫@*然后最后一行結尾寫*@。

Razor的單行注釋也差不多這種形式,在行首寫@*,行尾寫*@,如下所示。

@* A one line code comment *@

三、Razor的三種基本形式

Razor通過三種標記方式來確定指定區域的代碼是服務器端代碼:

  • 行內(Inline)標記
  • 單行(Single Line)標記
  • 多行(Multi-Line)標記

打開Views文件夾下的First文件夾里的Index.cshtml文件。寫入如下代碼。圖中黃色部分就是Razor標記下的服務器端C#代碼

<div>
  <!--Single Line-->
  @{ var name = "Slark";}
  @{ Response.Write("Single Line : Name is" + name + "<br />");}

  <!--Inline-->
  Inline : Today is:@DateTime.Now.ToString("yyyy-MM-dd") <br />
  Inline : Name is @name <br />

  <!--Multi-Line-->
  @{
    var age = 25;
    Response.Write("Multi-Line : Age is " + age + "<br />");
  }
</div>

從上面代碼中可以看出行內標記@后面可以緊跟一個已經被定義的變量或者有返回值的函數

單行標記中每一行其實就是包含了一個C#語句,用分號結尾。

多行標記就是包含了多行C#語句。

四、語句運行順序

然后選擇剛才編輯的Index.cshtml,點擊菜單欄中的"在瀏覽器中查看",顯示結果如下。

右鍵點擊頁面選擇“查看源”,結果如下:

Single Line : Name isSlark
<br />
Multi-Line : Age is 25
<br />
<div><!--Single Line--><!--Inline-->Inline : Today is:2014-12-13
   <br />Inline : Name is Slark
   <br /><!--Multi-Line-->
</div>

運行結果是不是和你想的不太一樣呢。這個文件的執行順序是這樣的:

  • 服務器在這個文件中逐行搜尋Razor標記中的C#代碼,如果讀到的是C#單行或多行代碼,就執行它。執行后輸出的結果就是上面代碼中綠色的部分。如果搜尋到了行內代碼,就把這一段代碼替換成代碼對應的值,對應上面代碼中黃色部分。這樣把這個文件處理一遍之后。
  • 然后服務器會把文件中所有非Razor標記的代碼寫入要輸出的文件,對應上面代碼中藍色和黃色部分。

五、keyword(){}特殊語法

在遇到如if、for、while等具有"keyword(){}"形式的C#代碼結構時,Razor標記可以寫成"@keyword(){}"這樣的特殊形式。

這個不是強制性的,可以不用。下面給出兩個例子作為對比。

注釋掉Index.cshtml中現有的代碼。添加如下代碼:

@if (1 > 2)
{
Response.Write("1 > 2 <br />");
}
else
{
Response.Write("1 <= 2 <br />");
}

@for (int i = 0; i < 3; i++)
{
Response.Write(i + " <br />");
}

選擇在瀏覽器·中查看,得到如下結果:

六、在Razor標記內寫入文本

注釋掉Index.cshtml原有代碼,寫入下面代碼。

@{var name1 = "Slark";<p>var name2 = "Slark";</p>@:var name3 = "Slark";<br /><text>var name4 = "Slark";<br />var name5 = "Slark";</text>
}

代碼看起來是不是很奇怪?來看一下執行結果:

一般情況下,@{}中的代碼只被當作C#代碼運行。而上面代碼中只有name1被當作C#代碼處理而其他幾行都被當作文本輸出了。

之前的內容都是介紹怎么在html文件中嵌入服務器代碼,現在來介紹怎么在服務器代碼里嵌入html代碼...

如上面代碼中所示,一共三種方法:

  • 在Razor標記的代碼中如果有成對的html標記,則這個標記及其內容會被當作普通文本輸出。如上面的?<p>var name2 = "Slark";</p>
  • 在Razor標記的代碼中如果有"@:",則其后的一行代碼會被當作普通文本輸出。如上面的?@:var name3 = "Slark";<br />
  • 在Razor標記的代碼中如果有<text>...</text>標記,則其內容會被當作普通文本輸出。如上面的 <text> var name4 = "Slark";<br /> var name5 = "Slark"; </text>

您的推薦和留言是我繼續更新的動力,謝謝。

上一節:ASP.NET MVC5 + EF6 入門教程 (5) Model和Entity Framework

下一節:ASP.NET MVC5 + EF6 + Bootstrap3 (7) Bootstrap的柵格系統

posted on 2015-01-05 10:36 NET未來之路 閱讀(...) 評論(...) 編輯 收藏

轉載于:https://www.cnblogs.com/lonelyxmas/p/4202945.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259555.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259555.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259555.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab中求三維中的多個體積,用matlab計算由下面2個幾何體圍成的體積: x^2+y^2+z^2=36,((x-4)/5)^2+((y-1)/3)^2+((z-2)/5)^2=1...

答&#xff1a;>> triplequad((x,y,z)1*(x.^2y.^2z.^2答&#xff1a;首先建立一個m文件 我取的名字叫 syfs0000 function ysyfs0000(x) y[9*x(1)^236*x(2)^24*x(3)^2-36; x(1)^2-2*x(2)^2-20*x(3); 16*x(1)-x(1)^3-2*x(2)^2-16*x(3)^2;]; end 然后在command window 輸入 …

分析分布式服務框架

出處&#xff1a;http://www.cnblogs.com/zhangs1986/ 技術是為需求而服務的&#xff0c;分布式服務框架也同樣如此&#xff0c;它不是憑空誕生的&#xff0c;也是因為有這樣的需求才會有分布式服務框架這么樣的東西誕生&#xff0c;在這篇blog中來詳細的分析分布式服務框架誕…

PL/SQL注冊碼

code:j6stndb9tk72xfbhbqczcdqnjd8lyj466n number:882851 ps&#xff1a;xs374ca轉載于:https://www.cnblogs.com/myblogslh/p/4203173.html

遞歸--基于回溯和遞歸的八皇后問題解法

八皇后問題是在8*8的棋盤上放置8枚皇后&#xff0c;使得棋盤中每個縱向、橫向、左上至右下斜向、右上至左下斜向均只有一枚皇后。八皇后的一個可行解如圖所示&#xff1a; 思路 對于八皇后的求解可采用回溯算法&#xff0c;從上至下依次在每一行放置皇后&#xff0c;進行搜索&a…

matlab emf 讀取,20140219-Emf_Demo EMF 矢量圖 可以讀取和保存EMF 的封閉類 非常實用 matlab 238萬源代碼下載- www.pudn.com...

文件名稱: 20140219-Emf_Demo下載收藏√ [5 4 3 2 1 ]開發工具: Visual C文件大小: 6312 KB上傳時間: 2014-07-10下載次數: 2詳細說明&#xff1a;EMF 矢量圖 可以讀取和保存EMF矢量圖的封閉類非常實用-EMF EMF vector can read and save the class very useful vector cl…

orcale 之 集合操作

集合操作就是將兩個或者多個 sql 查詢的結果合并成復合查詢。常見的集合操作有UNION(并運算)、UNION ALL、INTERSECT(交運算)和MINUS(差運算)。 UNION UNION 運算可以將多個查詢結果集相加,形成一個結果集, 其結果相當于集合運算的并運算. UNION 可以將第一個查詢結果的所有行與…

PDFMate PDF Converter Pro

http://www.pdfmate.com轉載于:https://www.cnblogs.com/scgw/p/4203999.html

linux 廣播

廣播是一臺主機向局域網內的所有主機發送數據。這時&#xff0c;同一網段的所有主機都能接收到數據。發送廣播包的步驟大致如下: (1)確定一個發送廣播的接口&#xff0c;如eth0 (2)確定廣播的地址&#xff0c;通過ioctl函數&#xff0c;請求碼設置為SIOCGIFBRDADDR得到廣播的地…

thinkphp5.1 php7,空白目錄 · 細數ThinkPHP5.1.7版本新特性 · 看云

>[danger] 官方已經在前不久發布了ThinkPHP5.1.7版本&#xff0c;5.1版本相較于5.0版本而言&#xff0c;本身更加嚴謹和規范&#xff0c;更接近主流設計思想。近半年來&#xff0c;5.1版本更新頻繁&#xff0c;此次最新版本更是帶來了很多的新特性。正在或者打算使用5.1版本…

JS中popup.js

為什么80%的碼農都做不了架構師&#xff1f;>>> //popup class 顯示彈出窗口&#xff0c;。/*以下為使用popup對象&#xff0c;傳入相應的配置參數&#xff0c;彈出不同類型的窗口 function ShowIframe() //顯示iframe { var popnew P…

圖像連通域標記算法研究

搬以前寫的博客【2014-03-01 08:09】 圖像連通域標記算法研究 ConnectedComponent Labeling 最近在研究一篇復雜下背景文字檢測的論文。 “Detecting Text in Natural Scenes with Stroke Width Transform ” CPVR 2010的文章&#xff0c;它主要探討利用文字內…

lightoj 1214

lightoj 1214 Large Division &#xff08;大數除法&#xff09; 鏈接&#xff1a;http://www.lightoj.com/volume_showproblem.php?problem1214 題意&#xff1a;給定 a&#xff0c; b 兩個數&#xff0c;判斷 a 是否整除 b 。&#xff08;a 為 大數&#xff09; 思路&#…

二階振蕩衰減 matlab,基于Matlab/Simulink的二階控制系統仿真研究

1 二階控制系統模型本文引用地址&#xff1a;http://www.eepw.com.cn/article/201612/328597.htm能夠用二階微分方程描述的系統稱為二階控制系統。在控制工程實踐中&#xff0c;二階控制系統十分常見&#xff0c;例如&#xff0c;電樞控制的直流電動機&#xff0c;RLC網絡和彈簧…

CCF201409-5 拼圖(30分)

試題編號&#xff1a; 201409-5 試題名稱&#xff1a; 拼圖 時間限制&#xff1a; 3.0s 內存限制&#xff1a; 256.0MB 問題描述&#xff1a; 問題描述給出一個nm的方格圖&#xff0c;現在要用如下L型的積木拼到這個圖中&#xff0c;使得方格圖正好被拼滿&#xff0c;請問總共有…

歐幾里得算法(即輾轉相除法)的時間復雜度

本文是參考新浪博客而寫。 歐幾里得算法, 又稱輾轉相除法, 用于求兩個自然數的最大公約數. 算法的思想很簡單, 基于下面的數論等式 gcd(a, b) gcd(b, a mod b) 其中gcd(a, b)表示a和b的最大公約數, mod是模運算, 即求a除以b的余數. 代碼如下: #include <iostream> #i…

UIImageJPEGRepresentation和UIImagePNGRepresentation

在Iphone上有兩種讀取圖片數據的簡單方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. UIImageJPEGRepresentation函數需要兩個參數:圖片的引用和壓縮系數.而UIImagePNGRepresentation只需要圖片引用作為參數.通過在實際使用過程中,比較發現: UIImagePNGRepresenta…

C++ 0x

轉載于:https://www.cnblogs.com/iiiDragon/p/3230006.html

系列文章----.Net程序員學用Oracle系列

.Net程序員學用Oracle系列(18)&#xff1a;PLSQL Developer 攻略.Net程序員學用Oracle系列(17)&#xff1a;數據庫管理工具(SQL Plus).Net程序員學用Oracle系列(16)&#xff1a;訪問數據庫(ODP.NET).Net程序員學用Oracle系列(15)&#xff1a;DUAL、ROWID、NULL.Net程序員學用Or…

Github for Windows使用介紹

Git已經變得非常流行&#xff0c;連Codeplex現在也已經主推Git。Github上更是充斥著各種高質量的開源項目&#xff0c;比如ruby on rails&#xff0c;cocos2d等等。對于習慣Windows圖形界面的程序員來講&#xff0c;Github的使用是需要點時間和耐心的&#xff0c;然而最近Githu…

matlab中udt函數,《MATLAB信號處理超級學習手冊》——2.5 離散時間信號中的運算...

本節書摘來自異步社區《MATLAB信號處理超級學習手冊》一書中的第2章&#xff0c;第2.5節&#xff0c;作者&#xff1a;MATLAB技術聯盟 , 史潔玉著&#xff0c;更多章節內容可以訪問云棲社區“異步社區”公眾號查看2.5 離散時間信號中的運算MATLAB信號處理超級學習手冊2.5.1 離散…