ASP.NET中的Code Behind技术

    一.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来设计你的页面的整个布局。把你的所以选项都设计到此页面中去。具体的界面如下图:
  
  20060110084555_01.jpg
  
  把此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:/InetPub/WWWRoot"目录下面创建一个目录为"mail",然后运行"开始>控制面板>管理工具>Internet 服务管理器>"创建虚拟目录的名称是"mail",如下图所示
  

20060110084607_02.jpg


  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 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:/InetPub/WWWRoot"中,打开浏览器,就可以运行程序了。
  
    五.总结
  
    Code Behind的出现使得编写功能强大Web程序成为了一件相对容易的事情,Code Behind的功能十分强大,制作又相对灵活。非常适合喜欢组件编程的朋友。

阅读更多
个人分类: asp.net
上一篇ASP.NET Web Service
下一篇C#取得设备网卡的MAC地址和硬盘的卷标号
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭