服务器控件的好处是我们可以在代码中动态控制服务器控件的属性,对于上面的代码我们改造如下:
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>服务器表单和HTML服务器控件</title>
</head>
<script runat="server">
protected void btnOK_Click(Object Src, EventArgs E)
{
Response.Write("用户名:"+this.txtUserName.Value);
Response.Write("密码:"+this.txtPassword.Value);
this.btnOK.Disabled=true;
}
</script>
<body>
<form runat="server">
<input type="text" runat="server" id="txtUserName" />
<input type="password" runat="server" id="txtPassword" />
<input type="submit" runat="server" id="btnOK" value="提交" onserverclick="btnOK_Click" />
</form>
</body>
</html>
上面代码中多了“<script runat="server"> ”,并且提交按钮多了一个onserverclick="btnOK_Click"属性。在“<script runat="server"></script>”标记中我们写了一个protected void btnOK_Click(Object Src, EventArgs E)方法,这个方法符合System.EventHandler委托的标准。这个方法有两个参数,第一个表示由什么控件激发了这个事件,第二个参数表示事件发生时的一些相关信息。
在protected void btnOK_Click(Object Src, EventArgs E)方法中我们利用了类似WinForm中操作控件的方式来操作我们的服务器控件,这也就是为什么asp.net页面成为WebForm的原因。在这个方法里我们获取了控件的值,并最后将提交按钮禁用。
提交按钮的onserverclick属性值表示当这个按钮点击后由服务器上的哪个方法进行处理,这个方法要满足System.EventHandler委托的定义,这里我们写了btnOK_Click这个方法名。