ASP.NET_编码模型

 

使用Visual Studio 开发ASP.NET网站,有两种编码模型可供选择

一:内联代码

二:代码隐藏

内联代码:这个模型和传统的ASP代码模型很相似,所有的代码以及HTML标签都被存放在同一个文件内,代码都是内联在一个或多个脚本块内的。这种模型比较方便,,因为它所有东西都是放在一个包内,这对于开发简单的网页很方便

代码隐藏:这个模型将每个ASP网页分离到两个文件内:一个是包含HTML以控件标签的.aspx标记文件,另一个是后台代码文件,比如cs代码文件,这种模型提供了将用户界面和后台代码相分离的特性,这对于构建复杂的页面非常重要。

需要说明的是,只有创建基于无项目文件的开发时才能自由选择这两种编码模型,对于创建Web项目时,则只能使用代码隐藏模型。

创建内联代码编码模型:

正如之前所说,创建内联代码模型,需要使用基于无项目文件的开发

首先创建一个网站

Image635088056178807406

当使用添加新项的时候,勾选【将代码放在单独的文件中】,即将HTML,控件标识和后台代码文件分开存放了

 

image

 

下面我们分别创建Default2和Default3页面,其中Default2使用了代码隐藏模型,而Default3使用内联代码模型

image

先来看下他们的默认代码:

Default2

   1: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
   2:  
   3: <!DOCTYPE html>
   4:  
   5: <html xmlns="http://www.w3.org/1999/xhtml">
   6: <head runat="server">
   7: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
   8:     <title></title>
   9: </head>
  10: <body>
  11:     <form id="form1" runat="server">
  12:     <div>
  13:     
  14:     </div>
  15:     </form>
  16: </body>
  17: </html>

Default2的后台代码

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Web;
   5: using System.Web.UI;
   6: using System.Web.UI.WebControls;
   7:  
   8: public partial class Default2 : System.Web.UI.Page
   9: {
  10:     protected void Page_Load(object sender, EventArgs e)
  11:     {
  12:  
  13:     }
  14: }

 

Default3

   1: <%@ Page Language="C#" %>
   2:  
   3: <!DOCTYPE html>
   4:  
   5: <script runat="server">
   1:  
   2:  
</script>
   6:  
   7: <html xmlns="http://www.w3.org/1999/xhtml">
   8: <head runat="server">
   9: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  10:     <title></title>
  11: </head>
  12: <body>
  13:     <form id="form1" runat="server">
  14:     <div>
  15:     
  16:     </div>
  17:     </form>
  18: </body>
  19: </html>

 

现在来做一个功能演示:点击页面中的按钮,是的Label标签显示当前系统时间,用内联代码和代码隐藏模型分别实现,查看它们的区别.

首先代码隐藏模型实现如下:

   1: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
   2:  
   3: <!DOCTYPE html>
   4:  
   5: <html xmlns="http://www.w3.org/1999/xhtml">
   6: <head runat="server">
   7: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
   8:     <title>代码隐藏编码模型</title>
   9: </head>
  10: <body>
  11:     <form id="form1" runat="server">
  12:     <div>
  13:     
  14:         <asp:Label ID="Label1" runat="server" Text="点击"></asp:Label><br />
  15:         <br />
  16:         <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button_Click" />
  17:     
  18:     </div>
  19:         
  20:     </form>
  21: </body>
  22: </html>

 

 

后台代码:

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Web;
   5: using System.Web.UI;
   6: using System.Web.UI.WebControls;
   7:  
   8: public partial class Default2 : System.Web.UI.Page
   9: {
  10:     protected void Page_Load(object sender, EventArgs e)
  11:     {
  12:  
  13:     }
  14:     protected void Button_Click(object sender, EventArgs e)
  15:     {
  16:         Label1.Text = "当前时间为:" + DateTime.Now.ToLongTimeString();
  17:     }
  18: }

 

内联代码模型:

   1: <%@ Page Language="C#" %>
   2:  
   3: <!DOCTYPE html>
   4:  
   5: <script runat="server">
   1:  
   2:  
   3:     protected void Button1_Click(object sender, EventArgs e)
   4:     {
   5:         Label1.Text = "当前系统时间为:" + DateTime.Now.ToLongTimeString();
   6:     }
</script>
   6:  
   7: <html xmlns="http://www.w3.org/1999/xhtml">
   8: <head runat="server">
   9: <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  10:     <title>内联代码编码模型</title>
  11: </head>
  12: <body>
  13:     <form id="form1" runat="server">
  14:     <div>
  15:     
  16:         <asp:Label ID="Label1" runat="server" Text="点击"></asp:Label>
  17:         <br />
  18:         <br />
  19:         <br />
  20:         <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
  21:     
  22:     </div>
  23:     </form>
  24: </body>
  25: </html>
两者的运行效果如下:
image

 

可以看出内联代码是直接写在Spcript脚本块中的。而代码隐藏是写在以后.cs为结尾的页面名的文件中.

 

既然代码隐藏模型的用户界面和后台代码是分开的,那么它们是如何连接的呢?

首先每个个.aspx文件都以Page指令开始,同时指定页面所采用的语言以及后台代码的存放位置,当然啦,内联模型是没有后台代码的。再来看一下Page指令

   1: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>

 

.aspx文件使用Inherits特性来声明正在使用的类,使用CodeFlie特性指定包含隐藏代码的文件名,即Inherits指定的类,就是CodeFlie的Default2.aspx.cs中的

   1: public partial class Default2 : System.Web.UI.Page

 

posted @ 2013-07-07 16:38  漫长当下  阅读(755)  评论(0编辑  收藏  举报