ASP.NET Razor - C# 和 VB 代碼語法
Razor 同時(shí)支持 C# (C sharp) 和 VB (Visual Basic)。
主要的 Razor C# 語法規(guī)則
- Razor 代碼塊包含在 @{ ... } 中
- 內(nèi)聯(lián)表達(dá)式(變量和函數(shù))以 @ 開頭
- 代碼語句用分號結(jié)束
- 變量使用 var 關(guān)鍵字聲明
- 字符串用引號括起來
- C# 代碼區(qū)分大小寫
C# 文件的擴(kuò)展名是 .cshtml
實(shí)例
<html> <body> <!-- Single statement block --> @{ var myMessage = "Hello World"; } <!-- Inline expression or variable --> <p>The value of myMessage is: @myMessage</p> <!-- Multi-statement block --> @{ var greeting = "Welcome to our site!"; var weekDay = DateTime.Now.DayOfWeek; var greetingMessage = greeting + " Here in Huston it is: " + weekDay; } <p>The greeting is: @greetingMessage</p> </body> </html>
運(yùn)行實(shí)例 ?
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
主要的 Razor VB 語法規(guī)則
- Razor 代碼塊包含在 @Code ... End Code 中
- 內(nèi)聯(lián)表達(dá)式(變量和函數(shù))以 @ 開頭
- 變量使用 Dim 關(guān)鍵字聲明
- 字符串用引號括起來
- VB 代碼不區(qū)分大小寫
- VB 文件的擴(kuò)展名是 .vbhtml
實(shí)例
<!-- Single statement block --> @Code dim myMessage = "Hello World" End Code <!-- Inline expression or variable --> <p>The value of myMessage is: @myMessage</p> <!-- Multi-statement block --> @Code dim greeting = "Welcome to our site!" dim weekDay = DateTime.Now.DayOfWeek dim greetingMessage = greeting & " Here in Huston it is: " & weekDay End Code <p>The greeting is: @greetingMessage</p>
運(yùn)行實(shí)例 ?
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
它是如何工作的?
Razor 是一種將服務(wù)器代碼嵌入在網(wǎng)頁中的簡單的編程語法。
Razor 語法是基于 ASP.NET 框架,專門用于創(chuàng)建 Web 應(yīng)用程序的部分 Microsoft.NET 框架。
Razor 語法支持所有 ASP.NET 的功能,但是使用的是一種簡化語法,對初學(xué)者而言更容易學(xué)習(xí),對專家而言更有效率的。
Razor 網(wǎng)頁可以被描述成帶以下兩種類型內(nèi)容的 HTML 網(wǎng)頁: HTML 內(nèi)容和 Razor 代碼。
當(dāng)服務(wù)器讀取頁面時(shí),它首先運(yùn)行 Razor 代碼,然后再發(fā)送 HTML 頁面到瀏覽器。在服務(wù)器上執(zhí)行的代碼能夠執(zhí)行一些在瀏覽器上不能完成的任務(wù),比如,訪問服務(wù)器數(shù)據(jù)庫。服務(wù)器代碼能創(chuàng)建動(dòng)態(tài)的 HTML 內(nèi)容,然后發(fā)送到瀏覽器。從瀏覽器上看,服務(wù)器代碼生成的 HTML 與靜態(tài)的 HTML 內(nèi)容沒有什么不同。
帶 Razor 語法的 ASP.NET 網(wǎng)頁有特殊的文件擴(kuò)展名 cshtml(Razor C#)或者 vbhtml(Razor VB)。
使用對象
服務(wù)器編碼往往涉及到對象。
"Date" 對象是一個(gè)典型的內(nèi)置的 ASP.NET 對象,但對象也可以是自定義的,一個(gè)網(wǎng)頁,一個(gè)文本框,一個(gè)文件,一個(gè)數(shù)據(jù)庫記錄,等等。
對象有用于執(zhí)行的方法。一個(gè)數(shù)據(jù)庫記錄可能有一個(gè) "Save" 方法,一個(gè)圖像對象可能有一個(gè) "Rotate" 方法,一個(gè)電子郵件對象可能有一個(gè) "Send" 方法,等等。
對象也有用于描述各自特點(diǎn)的屬性。一個(gè)數(shù)據(jù)庫記錄可能有 FirstName 和 LastName 屬性。
ASP.NET Date 對象有一個(gè) Now 屬性(寫成 Date.Now),Now 屬性有一個(gè) Day 屬性(寫成 Date.Now.Day)。下面實(shí)例演示了如何訪問 Data 對象的一些屬性:
實(shí)例
<table border="1"> <tr> <th width="100px">Name</th> <td width="100px">Value</td> </tr> <tr> <td>Day</td><td>@DateTime.Now.Day</td> </tr> <tr> <td>Hour</td><td>@DateTime.Now.Hour</td> </tr> <tr> <td>Minute</td><td>@DateTime.Now.Minute</td> </tr> <tr> <td>Second</td><td>@DateTime.Now.Second</td> </tr> </td> </table>
運(yùn)行實(shí)例 ?
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
If 和 Else條件
動(dòng)態(tài)網(wǎng)頁的一個(gè)重要特點(diǎn)是,您可以根據(jù)條件決定做什么。
做到這一點(diǎn)的常用方法是使用 if ... else 語句:
實(shí)例
@{ var txt = ""; if(DateTime.Now.Hour > 12) {txt = "Good Evening";} else {txt = "Good Morning";} } <html> <body> <p>The message is @txt</p> </body> </html>
運(yùn)行實(shí)例 ?
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
讀取用戶輸入
動(dòng)態(tài)網(wǎng)頁的另一個(gè)重要特點(diǎn)是,您可以讀取用戶輸入。
輸入是通過 Request[] 功能讀取的,并且傳送輸入數(shù)據(jù)是經(jīng)過 IsPost 條件判斷的:
實(shí)例
@{ var totalMessage = ""; if(IsPost) { var num1 = Request["text1"]; var num2 = Request["text2"]; var total = num1.AsInt() + num2.AsInt(); totalMessage = "Total = " + total; } } <!DOCTYPE html> <html> <body style="background-color: beige; font-family: Verdana, Arial;"> <form action="" method="post"> <p><label for="text1">First Number:</label><br> <input type="text" name="text1"></p> <p><label for="text2">Second Number:</label><br> <input type="text" name="text2"></p> <p><input type="submit" value=" Add "></p> </form> <p>@totalMessage</p> </body> </html>
運(yùn)行實(shí)例 ?
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例