先看一个有问题的程序:
<%@ Page Language="C#" %>
<%
void Page_Load(object sender, EventArgs e)
{
lb.Text = "Hello World";
}
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Hello World</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label runat="server" ID="lb"></asp:Label>
</div>
</form>
</body>
</html>
在 ASP.NET 中,不再是使用 <%%> 表示脚本区,而应该是 <script runat="server"></script>,runat="server" 不可少,表示是服务器端执行。
纠正后:
<%@ Page Language="C#" %>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
lb.Text = "Hello World";
}
</script>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Hello World</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label runat="server" ID="lb"></asp:Label>
</div>
</form>
</body>
</html>
可以看到:
<%@ Page Language="C#" %> 指令表示当前页面使用的是 C# 语言。
在 <script runat="server"> 中,也可以指定语言,但并不表示同一个页面中可以使用多种语言。
Page_Load 是系统函数,表示页面读取时执行该函数。
object sender, EventArgs e,这两个参数分别表示触发事件的对象和事件参数,对于事件函数(比如按钮的 onclick 触发的函数)必须有这两个参数。注意大小写敏感。
<asp:Label runat="server" ID="lb"></asp:Label> 是 Web 控制元件,它源于 HTML 元件,但又比 HTML 元件功能强大得多。它以 asp 为前缀,冒号后接元件的名称,runat="server" 不能省略,ID 可以被 ASP.NET 直接引用,比如上述的:lb.Text = "Hello World";。
Web 控制元件必须有结束符,不能是:
<asp:Label runat="server" ID="lb">
应该是:
<asp:Label runat="server" ID="lb"></asp:Label>
或者
<asp:Label runat="server" ID="lb" />