當前位置:開發者網絡 >> 技術教程 >> ASP教程 >> ASP應用 >> 內容
精彩推薦
分類最新教程
分類熱點教程
    
ASP.NET中的Code Behind技術
作者:xinyun
日期:2005-01-26
人氣:
投稿:xinyun(原創)
來源:未知
字體:
收藏:加入瀏覽器收藏
以下正文:
一.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,可以借助下表來轉換:

  HTML HTML 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 Firstage
{
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 Firstage {" 標識來替代 <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的功能十分強大,製作又相對靈活。非常適合喜歡組件編程的朋友。
相關文章: