|
|
|
|
|
本文記錄我創(chuàng)建最簡單的aspx單頁程序代碼文件時(shí),遇到的一個(gè)奇怪的問題,及解決方法。
asp和aspx(C#)的語法混合也可以?
我使用了某些教程里的aspx單頁程序代碼,如下這樣:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>aspx示例</title>
</head>
<body>
<%
response.write (now())
%>
</body>
</html>
很奇怪竟然運(yùn)行成功了,這簡直是asp和aspx(C#)的語法混合體呀。
了解aspx(C#)語法的人都看得出,示例中aspx(C#)的語法是錯(cuò)誤的,它沒有區(qū)分字母大小寫,句末也沒有分號(hào)。正確寫法應(yīng)該是這樣:
<%
Response.Write (now());
%>
而這僅僅是語法上的錯(cuò)誤,實(shí)際上now()
的用法這樣寫也會(huì)報(bào)錯(cuò)的,asp語法里這樣寫沒有錯(cuò),但在aspx(C#)里正確的寫法應(yīng)該是這樣:
<%
Response.Write (System.DateTime.Now.ToString());
%>
然而當(dāng)我把示例代碼改成這樣時(shí),竟然報(bào)錯(cuò),提示:字符無效。
強(qiáng)行編譯器使用asp.net解析代碼
我不明白aspx編譯器是如何解析上面示例的代碼的,為了強(qiáng)行編譯器使用asp.net來解析代碼,我于是在代碼開頭加上了這句:
<%@ Page Language="C#" %>
確實(shí)有效!加上這句后,aspx(C#)代碼終于要嚴(yán)格符合語法了:區(qū)分大小寫,句末需分號(hào),now()
的寫法有誤。于是得到了正確的aspx(C#)示例代碼:
<%@ Page Language="C#" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>aspx示例</title>
</head>
<body>
<%
Response.Write ("當(dāng)前時(shí)間:" + System.DateTime.Now.ToString());
%>
</body>
</html>
我們可以引用System
命名空間,參考:
于是示例代碼可改為:
<%@ Page Language="C#" %>
<%@ Import Namespace="System" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>aspx示例</title>
</head>
<body>
<%
Response.Write ("當(dāng)前時(shí)間:" + DateTime.Now.ToString());
%>
</body>
</html>
總結(jié)
本文通過最簡單的aspx單頁程序文件的示例代碼,明白到需在前面加上@Page
聲明,否則編譯器可能會(huì)解析有誤。
相關(guān)文章