Razor 是 ASP.NET 的伺服器端標記語法,支援 C# (C Sharp) 與 VB.NET (Visual Basic) 兩種程式語言,提供簡潔優雅的程式碼嵌入體驗。
@{ ... } (隱含輸出) 或 @functions { ... } (定義函數)@variable、@(expression) (複雜運算式需括號);var (型別推論) 或顯式型別"..."、逐字字串 @"...".cshtml<!-- Single statement block -->
@{ var myMessage = "Hello World"; }
<!-- Inline expression -->
<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 Houston it is: " + weekDay;
}
<p>The greeting is: @greetingMessage</p>
@Code ... End Code@variableDim 關鍵字"...".vbhtml& 運算子 (建議) 或 +<!-- Single statement block -->
@Code Dim myMessage = "Hello World" End Code
<!-- Inline expression -->
<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 Houston it is: " & weekDay
End Code
<p>The greeting is: @greetingMessage</p>
Razor 是將伺服器程式碼嵌入網頁的簡化語法,基於 ASP.NET 框架 (Microsoft .NET Framework 核心子集):
副檔名對應:.cshtml (Razor C#)、.vbhtml (Razor VB.NET)。
伺服器程式碼核心在於物件操作。內建物件範例:DateTime、Request、Response、Server、Session。自訂物件:資料庫實體、ViewModel、服務類別。
Database.Query()、Email.Send()、Image.Rotate())User.FirstName、Product.Price、DateTime.Now.Day)<table border="1">
<tr><th>Name</th><td>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>
</table>
@{
var txt = "";
if (DateTime.Now.Hour > 12)
{ txt = "Good Evening"; }
else
{ txt = "Good Morning"; }
}
<html><body>
<p>The message is @txt</p>
</body></html>
@{
var totalMessage = "";
if (IsPost)
{
var num1 = Request["text1"];
var num2 = Request["text2"];
var total = num1.AsInt() + num2.AsInt();
totalMessage = "Total = " + total;
}
}
<html><body>
<form method="post">
<p><label>First Number:</label><br><input type="text" name="text1" /></p>
<p><label>Second Number:</label><br><input type="text" name="text2" /></p>
<p><input type="submit" value="Add" /></p>
</form>
<p>@totalMessage</p>
</body></html>
IsPost 檢查 HTTP 方法。Request[key] 存取表單/查詢字串值。AsInt() 安全轉換字串為整數。
| 語法元素 | C# (.cshtml) | VB.NET (.vbhtml) |
|---|---|---|
| 程式碼區塊 | @{ ... } | @Code ... End Code |
| 內嵌運算式 | @expr | @expr |
| 區塊分隔 | { } | 關鍵字 |
| 陳述式結尾 | ; | 換行 |
| 變數宣告 | var / 型別 | Dim |
| 字串串接 | + | & |
| 邏輯 AND | && | AndAlso |
| 邏輯 OR | || | OrElse |
| 不等於 | != | <> |
| 陣列/索引 | arr[i] | arr(i) |
| 大小寫敏感 | 是 | 否 |
| 註解 | @* ... *@ / // /* */ | @* ... *@ / ' |