使用Visual Studio 开发ASP.NET网站,有两种编码模型可供选择
一:内联代码
二:代码隐藏
内联代码:这个模型和传统的ASP代码模型很相似,所有的代码以及HTML标签都被存放在同一个文件内,代码都是内联在一个或多个脚本块内的。这种模型比较方便,,因为它所有东西都是放在一个包内,这对于开发简单的网页很方便
代码隐藏:这个模型将每个ASP网页分离到两个文件内:一个是包含HTML以控件标签的.aspx标记文件,另一个是后台代码文件,比如cs代码文件,这种模型提供了将用户界面和后台代码相分离的特性,这对于构建复杂的页面非常重要。
需要说明的是,只有创建基于无项目文件的开发时才能自由选择这两种编码模型,对于创建Web项目时,则只能使用代码隐藏模型。
创建内联代码编码模型:
正如之前所说,创建内联代码模型,需要使用基于无项目文件的开发
首先创建一个网站
当使用添加新项的时候,勾选【将代码放在单独的文件中】,即将HTML,控件标识和后台代码文件分开存放了
下面我们分别创建Default2和Default3页面,其中Default2使用了代码隐藏模型,而Default3使用内联代码模型
先来看下他们的默认代码:
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>
可以看出内联代码是直接写在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