ASP.NET网页代码模型分析


1.       asp.net网页有两部分组成

可视元素,包括标记、服务器控件和静态文本

页的编程逻辑,包括事件处理程序和其他代码。

2.        ASP.NET 提供两个用于管理可视元素和代码的模型,即单文件页模型和代码隐藏页模型。 

两个模型功能相同,两种模型中可以使用相同的控件和代码

3.        单文件页模型

 

在单文件页模型中,页的标记及其编程代码位于同一个物理 .aspx 文件中。 编程代码位于 script 块中,该块包含 runat="server" 特性,此特性将其标记为 ASP.NET 应执行的代码。

 

代码文件如下 SinglePage.aspx

 

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

<script runat="server">

void Button1_Click(Object sender, EventArgs e)

{

    Label1.Text = "Clicked at " + DateTime.Now.ToString();

}

</script>

<html>

<head>

  <title>Single-File Page Model</title>

</head>

<body>

  <form runat="server">

    <div>

       <asp:Label id="Label1"

         runat="server" Text="Label">

       </asp:Label>

       <br />

       <asp:Button id="Button1"

         runat="server"

         οnclick="Button1_Click"

         Text="Button">

      </asp:Button>

    </div>

  </form>

</body>

</html>

4.       代码隐藏页模型

通过代码隐藏页模型,可以在一个文件(.aspx 文件)中保留标记,并在另一个文件中保留编程代码,但并不是所有的语言都支持该模型,只有支持分部类才可以。

代码文件 Sample.aspx

<%@ Page Language="C#" CodeFile="Sample.aspx.cs"

    Inherits="_Default" AutoEventWireup="true" %>

<html>

<head runat="server" >

   <title>Code-Behind Page Model</title>

</head>

<body>

  <form id="form1" runat="server">

    <div>

       <asp:Label id="Label1"

         runat="server" Text="Label" >

      </asp:Label>

      <br />

      <asp:Button id="Button1"

         runat="server"

         οnclick="Button1_Click"

         Text="Button" >

       </asp:Button>

    </div>

  </form>

</body>

</html>

代码文件Sample.cs

sing System;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

public partial class _Default:System.Web.UI.Page

{

    protected void Button1_Click(object sender, EventArgs e)

    {

        Label1.Text = "Clicked at " + DateTime.Now.ToString();

    }

}

 

5.       两种模型编译后各个文件产生的类

sample.aspx生成的类

Sample.cs产生的类

 

Single.aspx产生的文件

生成的工厂类

 

 

 

由以上可以看到两种模型最终产生的类是相同的,代码隐藏页模型巧妙的运用了面向对象的继承特性实现了代码分离

就使用的方面而言,建web网站页面后台代码中你会发现是没有命名空间的,有时候代码出错还不容易发现,还有就是,如果建的是web项目,当你修改内容(这里指修改后台代码),然后刷新页面时是没有反应的,要重启浏览器才能看到更改后的结果,如果建的是web网站,则相反。
上面的是在实践过程中发现的,下面这些是我在网上找的一些不同点:
1、web应用程序Default.aspx显示有两个原有文件及Default.aspx.cs和Default.aspx.designer.cs;Web网站Default.aspx显示有一个原有文件Default.aspx.cs。
2、web应用程序有重新生成和发布两项;Web网站只有一个发布网站。
3、web应用程序和一般的winform没有什么区别都有引用的是命名空间等;Web网站在引用后出现一个bin文件夹那里存放dll和pdb文件。
4、web应用程序可以作为类库被引用;Web网站则不可以作为类库被引用。
5、web应用程序可以添加ASP.Net文件夹中不包括bin、App_Code;Web网站可以添加ASP.Net文件夹包括bin、App_Code

6、web应用程序还可添加组件和类;Web网站则没有。

 如果在开发上有如下需求,建议使用创建Web应用程序的方式来构建自己的Web项目:
        希望采用项目的管理方式,需要使用多个项目来构建一个Web应用,即把一个大的ASP.NET项目拆分成多个小项目。

        在开发上Web页面或者Web用户控件中需要使用到单独的类,并且希望使用命名空间来进行管理,编译后要控制应用程序集的名字。


        如果在开发上有下列需求,建议使用创建Web网站的方式来构建自己的Web项目:
       喜欢使用 Single-Page Code 模型来开发网站页面,而不是使用Code-Behind 模型来编写网站页面。
        在编写页面时,为了可以快速地看到编写效果,动态编译该页面,马上可以看到效果,不用编译整个站点。
需要每个页面产生一个应用程序集。

        希望把一个目录当做一个Web应用来处理,而不需要新建一个项目文件。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值