asp.net 2.0后台代码与内联代码的对比1
内联(inline)代码的分离
下面的例子演示了一个简单的带有三个服务器控件(分别是文本框、按钮和标签)的asp.net页面。最初这些控件呈现的内容与html形式是相同的。但是,当你在客户端的文本框中输入值并点击按钮的时候,该页面会发回服务器并且在该页面的代码中处理这个点击事件,动态地更新标签控件的text属性。接下来这个页面会重新呈现以反映更新过的文本。这个简单的例子演示了服务器控件模型背后的基本原理,它使asp.net成为最容易学习和掌握的web编程模型之一。
<%@ page language="vb" %>
<script runat="server">
sub button1_click(byval sender as object, byval e as system.eventargs)
label1.text = "hello " & textbox1.text
end sub
</script>
<html>
<head>
<title>asp.net inline pages</title>
</head>
<body>
<form id="form1" runat="server">
<h1>welcome to asp.net 2.0!</h1>
<b>enter your name:</b>
<asp:textbox id="textbox1" runat="server"/>
<asp:button id="button1" text="click me" onclick="button1_click" runat="server"/>
<br />
<br />
<asp:label id="label1" text="hello" runat="server" />
</form>
</body>
</html>
请注意:上面的例子中的按钮事件处理程序位于包含服务器控件的同一个页面中的<script></script>标记之内。asp.net把这种情况称为页面编程代码内联(code-inline),当你希望在同一个文件中处理代码和显示逻辑的时候,它是非常有用的。但是,asp.net还支持另外一种用于存放你的代码和显示内容的方法,称为后台代码(code-behind)模型。使用后台代码的时候,处理事件的代码位于与服务器控件和标记的页面文件分离的另一个物理上独立的文件之中。当你需要维护这些独立的文件(例如多个人一起建立应用程序)的时候,代码和内容之间的这种清晰的分离是非常有用的。在小组项目中,设计者处理应用程序的ui部分,开发者处理行为或代码是很常见的,后台代码模型适合于这种情况。
简化的后台代码模型
asp.net 2.0为后台代码页面引入了一个改良的运行时(runtime),它简化了页面和代码之间的连接。在新的后台代码模型中,页面被声明为局部(partial)类,允许在运行时把页面和代码文件编译到一个类中。页面代码引用codefile属性和<%@ page %>指令中的后台代码文件,在inherits属性中指定类的名称。请注意,后台代码类的成员必须是公共的(public)或受保护的(protected),不能是私有的(private)。
<%@ page language="vb" codefile="codebehind_vb.aspx.vb" inherits="codebehind_vb_aspx" %>
<html>
<head>
<title>asp.net codebehind pages</title>
</head>
<body>
<form runat="server">
<h1>welcome to asp.net 2.0!</h1>
<b>enter your name:</b>
<asp:textbox id="textbox1" runat="server"/>
<asp:button id="button1" text="click me" onclick="button1_click" runat="server"/>
<br />
<br />
<asp:label id="label1" text="hello" runat="server" />
</form>
</body>
</html>
简化的后台代码模型的优势在于,你不必单独地在后台代码类中声明服务器控件变量。使用局部类(2.0中的新特性)允许aspx页面中的服务器控件id直接被后台代码文件访问。这极大地简化了后台代码页面的维护工作量。