asp.net razor - c# 和 vb 代碼語(yǔ)法
razor 同時(shí)支持 c# (c sharp) 和 vb (visual basic)。
主要的 razor c# 語(yǔ)法規(guī)則
- razor 代碼塊包含在 @{ ... } 中
- 內(nèi)聯(lián)表達(dá)式(變量和函數(shù))以 @ 開(kāi)頭
- 代碼語(yǔ)句用分號(hào)結(jié)束
- 變量使用 var 關(guān)鍵字聲明
- 字符串用引號(hào)括起來(lái)
- c# 代碼區(qū)分大小寫(xiě)
- c# 文件的擴(kuò)展名是 .cshtml
c# 實(shí)例
@{ 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>
主要的 razor vb 語(yǔ)法規(guī)則
- razor 代碼塊包含在 @code ... end code 中
- 內(nèi)聯(lián)表達(dá)式(變量和函數(shù))以 @ 開(kāi)頭
- 變量使用 dim 關(guān)鍵字聲明
- 字符串用引號(hào)括起來(lái)
- vb 代碼不區(qū)分大小寫(xiě)
- vb 文件的擴(kuò)展名是 .vbhtml
實(shí)例
@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>
它是如何工作的?
razor 是一種將服務(wù)器代碼嵌入在網(wǎng)頁(yè)中的簡(jiǎn)單的編程語(yǔ)法。
razor 語(yǔ)法是基于 asp.net 框架,專(zhuān)門(mén)用于創(chuàng)建 web 應(yīng)用程序的部分 microsoft.net 框架。
razor 語(yǔ)法支持所有 asp.net 的功能,但是使用的是一種簡(jiǎn)化語(yǔ)法,對(duì)初學(xué)者而言更容易學(xué)習(xí),對(duì)專(zhuān)家而言更有效率的。
razor 網(wǎng)頁(yè)可以被描述成帶以下兩種類(lèi)型內(nèi)容的 html 網(wǎng)頁(yè): html 內(nèi)容和 razor 代碼。
當(dāng)服務(wù)器讀取頁(yè)面時(shí),它首先運(yùn)行 razor 代碼,然后再發(fā)送 html 頁(yè)面到瀏覽器。在服務(wù)器上執(zhí)行的代碼能夠執(zhí)行一些在瀏覽器上不能完成的任務(wù),比如,訪問(wèn)服務(wù)器數(shù)據(jù)庫(kù)。服務(wù)器代碼能創(chuàng)建動(dòng)態(tài)的 html 內(nèi)容,然后發(fā)送到瀏覽器。從瀏覽器上看,服務(wù)器代碼生成的 html 與靜態(tài)的 html 內(nèi)容沒(méi)有什么不同。
帶 razor 語(yǔ)法的 asp.net 網(wǎng)頁(yè)有特殊的文件擴(kuò)展名 cshtml(razor c#)或者 vbhtml(razor vb)。
使用對(duì)象
服務(wù)器編碼往往涉及到對(duì)象。
"date" 對(duì)象是一個(gè)典型的內(nèi)置的 asp.net 對(duì)象,但對(duì)象也可以是自定義的,一個(gè)網(wǎng)頁(yè),一個(gè)文本框,一個(gè)文件,一個(gè)數(shù)據(jù)庫(kù)記錄,等等。
對(duì)象有用于執(zhí)行的方法。一個(gè)數(shù)據(jù)庫(kù)記錄可能有一個(gè) "save" 方法,一個(gè)圖像對(duì)象可能有一個(gè) "rotate" 方法,一個(gè)電子郵件對(duì)象可能有一個(gè) "send" 方法,等等。
對(duì)象也有用于描述各自特點(diǎn)的屬性。一個(gè)數(shù)據(jù)庫(kù)記錄可能有 firstname 和 lastname 屬性。
asp.net date 對(duì)象有一個(gè) now 屬性(寫(xiě)成 date.now),now 屬性有一個(gè) day 屬性(寫(xiě)成 date.now.day)。下面實(shí)例演示了如何訪問(wèn) date 對(duì)象的一些屬性:
實(shí)例
<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>
if 和 else條件
動(dòng)態(tài)網(wǎng)頁(yè)的一個(gè)重要特點(diǎn)是,您可以根據(jù)條件決定做什么。
做到這一點(diǎn)的常用方法是使用 if ... else 語(yǔ)句:
實(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>
讀取用戶(hù)輸入
動(dòng)態(tài)網(wǎng)頁(yè)的另一個(gè)重要特點(diǎn)是,您可以讀取用戶(hù)輸入。
輸入是通過(guò) request[] 功能讀取的,并且傳送輸入數(shù)據(jù)是經(jīng)過(guò) ispost 條件判斷的:
實(shí)例
var totalmessage = "";
if(ispost)
{
var num1 = request["text1"];
var num2 = request["text2"];
var total = num1.asint() + num2.asint();
totalmessage = "total = " + total;
}
}
<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>