top
Loading...
ASP.NET中的CodeBehind技術

一.Code Behind簡介

Code Behind就是所謂的代碼分離,自從Microsoft公司推出了ASP.NET以后,Code Behind就是一個熱門的話題。在一般的ASP.NET文件中,Code Behind主要是用二個文件來創建一個ASP.NET的頁面,其中一個是設計文件,一般以.aspx或者.ascx做為擴展名,而另外一個是程序代碼文件,一般以.vb或者.cs做為擴展名,其程序設計語言主要是VB.Net或者是C#。

二.Code Behind優點

用過ASP編過程序的人都知道,ASP程序是把界面設計和程序設計混合在一起的。因此當程序設計人員要修改應用程序界面布局的時候,就往往需要更改大量與界面無關的代碼,對于一個小程序,工作量不是很大,如果對于代碼量很大的程序,就是一項工作量不小的事情。而Code Behind把界面設計代碼和程序設計代碼以不同的文件分開,對于代碼的重復使用,程序的調試和維護都是革命性的。還有一點是,當你發布你的網站的時候,你就可以利用這種技術來有效的保護你的代碼。這對于程序的安全性是一個提高。Code Behind技術的出現有點象過去VB或者是Delphi出現一樣。這也就是他為什么一出現就成為一個熱門話題的原因。下面我們利用一個完整的例子來具體說明一下Code Behind技術的特點。

三.例子的簡介

本例題的運行環境是Windows 2000 Prefessional版和.Net FrameWork SDK Beat 2。程序設計語言是c#,其主要功能是發送電子郵件。程序分成二個部分,把發送電子郵件的界面代碼以mail.aspx文件保存,而發送的程序是以send.cs文件保存。

四.具體實現步驟

1).新建一個HTML頁面

你可以使用微軟的FontPage來設計你的頁面的整個布局。把你的所以選項都設計到此頁面中去。具體的界面如下圖:


把此HTML文件命名為send.htm。具體代碼如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
</head>
<body>
<h3>歡迎進入Code Behind設計界面</h3>
<form>
<table border="1" width="100%">
<tr>
<td width="100%" colspan="2">請填入下列各項:</td>
</tr>
<tr>
<td width="35%">姓名</td>
<td width="65%"><input type="text" name="Name" size="20">
</td>
</tr>
<tr>
<td width="35%">電子郵件地址</td>
<td width="65%"><input type="text" name="Email" size="20">
</td>
</tr>
<tr>
<td width="35%">內容</td>
<td width="65%">
<textarea rows="7" name="Message" cols="26">
</textarea>
</td>
</tr>
<tr>
<td width="100%" colspan="2">
<input type="submit" value="Submit" name="B1"></td>
</tr>
</table>
</form>
<p></p>
</body>
</html>

2).創建虛擬目錄

首先在"c:InetPubWWWRoot"目錄下面創建一個目錄為"mail",然后運行"開始>控制面板>管理工具>Internet 服務管理器>"創建虛擬目錄的名稱是"mail",如下圖所示:


3).創建內嵌代碼的ASP.NET文件

如果你已經完成了創建虛擬目錄的工作,并且把send.htm文件拷貝到了此目錄中,請把send.htm文件改名為send.aspx。然后用Windows自帶的NotePad或者其他的文本編輯器打開此文件。

接下來我們首先創建的是代碼內嵌的ASP.NET文件,然后再把把轉換成Code Behind文件。雖然創建代碼內嵌的ASP.NET文件在本文的論述中是一項多余的工作,但這卻方便了調試,便于理解,并且一旦你的代碼內嵌的文件成功運行,再把他轉換成Code Behind文件就相對容易了許多。具體步驟如下:

A).加入頁面表示

在用文本編輯器打開文件的第一行,加入一下表示:

<%@ Page Language="C#" %>

b).把mail.aspx中用到的Html組件轉換為HtmlControls,可以借助下表來轉換:

HTMLHTML Control
<form> <form runat="server" >
<input type="text" name="Name" size="20" > <input type="text" id="Name" name="Name" size="20" runat="server" />
<input type="text" name="Email" size="20" ><input type="text" id="Email" name="Email" size="20" runat="server" />
<textarea rows="7" name="Message" cols="26">
</textarea>
<textarea rows="7" id="Message" name="Message" cols="26" runat="server">
</textarea>
<input type="submit" value="Submit" name="B1"><input type="submit" id="B1" value="Submit" name="B1" OnServerClick="Post_Form" runat="server">

C).加入內嵌代碼

當上面的轉換完成以后,接下來就要寫郵件發送的內嵌代碼。發送郵件使用的是名稱空間--System.Web.Mail中的一個SmtpMail 類。在SmtpMail 類中一個基本的方法--Send。此方法的成功調用需要以下四個參數:

1).電子郵件的源地址

2).電子郵件的目的地址

3).電子郵件的主題

4).電子郵件的內容

只有具備這四個參數,Send方法就能夠成功調用。對于電子郵件的發送可以參考我的以前文章《利用ASP.NET制作自己的郵件發送系統》。在此文中有具體闡述。一下代碼是完整的內嵌代碼:

<%@Page Language="C#" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
<script runat="server">
protected void Post_Form(object sender, EventArgs e)
{
file://Check if the Name and Email fields are filled in
if(Name.Value!=""&&Email.Value!="")
{
file://Send the Mail
System.Web.Mail.SmtpMail.Send(Email.Value,
"saurabh@mastercsharp.com",
"Mail From:"+Name.Value,Message.Value);
}
}
</script>
</head>
<body>
<h3>歡迎進入Code Behind設計界面</h3>
<form runat="server">
<table border="1" width="100%">
<tr>
<td width="100%" colspan="2">請填入下列各項</td>
</tr>
<tr>
<td width="35%">姓名</td>
<td width="65%">
<input type="text" id="Name" name="Name" size="20" runat="server" />
</td>
</tr>
<tr>
<td width="35%">電子郵件地址</td>
<td width="65%">
<input type="text" id="Email" name="Email" size="20" runat="server" />
</td>
</tr>
<tr>
<td width="35%">內容</td>
<td width="65%"><textarea rows="7" id="Message"
name="Message" cols="26" runat="server">
</textarea></td>
</tr>
<tr>
<td width="100%" colspan="2">
<input type="submit" value="Submit" id="B1" name="B1" OnServerClick="Post_Form"
runat="Server" />
</td>
</tr>
</table>
</form>
<p></p>
</body>
</html>

4).開始創建Code Behind文件

如果上面的頁面能夠成功運行,接下來就要把程序代碼從界面設計代碼中分離出來。這要通過以下步驟來完成。

a).創建一個.cs源程序文件

在你的應用程序的主機的虛擬目錄下建立文件名為"Send.cs",并且用文本編輯器打開此文件。

b).拷貝腳本到send.cs程序文件

把mail.aspx中的<script runat="server">到</script>中的所有內容(包括腳本的表示符),剪切到send.cs文件中。

C).修改.cs文件

必須保證send.cs文件是一個正確的c#文件,因此必須對此時的.cs文件進行必要的修改,下面列出修改前后的文件代碼,比較一下二者差異:

沒有修改的C#文件,如下:

<script runat="server">
protected void Post_Form(object sender, EventArgs e)
{
file://判斷姓名和電子郵件地址是否填入
if(Name.Value!=""&&Email.Value!="")
{
file://發送電子郵件
System.Web.Mail.SmtpMail.Send(Email.Value,
"majinhu@yesky.com",
"Mail From:"+Name.Value,Message.Value);
}
}
</script>

完成修改后的文件,如下:

using System;
using System.Web.UI;
using System.Web.UI.HtmlControls;
public class First:Page
{
file://聲明使用的組件
protected HtmlInputControl Name, Email;
protected HtmlTextArea Message;
public void Post_Form(object sender, EventArgs e)
{
file://判斷姓名和電子郵件地址是否填入
if(Name.Value!=""&&Email.Value!="")
{
file://發送電子郵件
System.Web.Mail.SmtpMail.Send(Email.Value,"majinhu@yesky.com",
"Mail From:"+Name.Value,Message.Value);
}
}
}

注釋:

第一:這種修改必須要引入必要的名稱空間,在本段程序中用到的名稱空間是"System","System.Web.UI"和"System.Web.UI.HtmlControls"。

第二:用"public class First:Page {" 標識來替代 <script runat="server"> 結束的標識符</script> 用"}"來替代。

第三:最后我們還要聲明在程序中用到的組件。

D).修改界面設計文件(mail.aspx)

上述的工作完成以后,就要修改界面設計文件,讓ASP.NET的運行環境知道在哪里裝入Code Behind文件。于是就進行下列修改,修改后的代碼如下:

mail.aspx


<%@ Page Language="C#" Inherits="First" Src="send.cs" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
</head>
<body>
<h3>歡迎進入Code Behind設計界面</h3>
<form runat="server">
<table border="1" width="100%">
<tr>
<td width="100%" colspan="2">請填入下列各項</td>
</tr>
<tr>
<td width="35%">姓名</td>
<td width="65%">
<input type="text" id="Name" name="Name" size="20" runat="server" />
</td>
</tr>
<tr>
<td width="35%">電子郵件地址</td>
<td width="65%">
<input type="text" id="Email" name="Email" size="20" runat="server" />
</td>
</tr>
<tr>
<td width="35%">內容</td>
<td width="65%"><textarea rows="7" id="Message"
name="Message" cols="26" runat="server">
</textarea></td>
</tr>
<tr>
<td width="100%" colspan="2">
<input type="submit" value="Submit" id="B1" name="B1" OnServerClick="Post_Form"
runat="Server" />
</td>
</tr>
</table>
</form>
<p></p>
</body>
</html>

注釋:

其中的第一句語句很重要,在這個語句中,指定了二個屬性:"Inherits"和"Src"。其中"Inherits"用來識別本頁面所用的類來自何處。"Src"是指定識別代碼文件,這句話的意思是指定了頁面所用的類名和類所在文件的來源。此時把Mail.aspx和Send.cs拷貝到"c:InetPubWWWRoot"中,打開瀏覽器,就可以運行程序了。

五.總結

Code Behind的出現使得編寫功能強大Web程序成為了一件相對容易的事情,Code Behind的功能十分強大,制作又相對靈活。非常適合喜歡組件編程的朋友。


作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗