ASP.NET中的代码分离

asp.net|代码分离

ASP.NET中包含了一种新方法:将商业逻辑代码从表达代码中分离出来。这通常被称为背后的代码,功能非常强大,并且非常容易执行。实现步骤就是:向ASP.NET 页面中增加用户界面元素,并为它们指定属性“runat=server”。然后,用.NET语言创建一个类文件来操作这些用户界面元素。最后,在ASP.NET 页面顶部增加一个指令,将用户界面与操作它的类文件附着在一起。

用一个简单的例子就能展示它是如何完成的。下面创建一个名叫WebPage.aspx的ASP.NET页面,在其中粘贴以下代码:

<%@ Page Language="VB" Inherits="dotNet101.MySample.WebPage" %>
<html>
<head>
<title>Code-Behind Demo</title>
</head>
<body>
<form id="messageForm" runat="server">
<asp:TextBox id="message" runat="server" />
<asp:Button id="submit" OnClick="submit_OnClick" Text="Send Message" runat="server" />
</form>
</body>
</html>

请注意增加到“Page”指令中的“Inherits”属性,它负责通知ASP.NET页面应该为其商业逻辑使用“dotNet101.MySample.WebPage”类。我们已经向这个页面增加了两个ASP.NET服务器控件,并且为它们和Form控件本身指定了“runat=server”属性。这些都是背后的代码类将要操作的控件。当用户点击“submit”(提交)按钮时,指定给Button服务器控件的“OnClick”属性就会告诉ASP.NET引擎激活背后代码类中的submit_OnClick事件处理器。

下面,我们需要创建一个背后代码类文件来操作ASP.NET页面。创建一个名为CodeBehind.vb的文件,类的Visual Basic.NET 代码如下:

Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls
Namespace dotNet101.MySample
Public Class WebPage : Inherits Page
Protected messageForm As HtmlForm
Protected message As TextBox
Public Sub submit_OnClick(sender As Object, e As EventArgs)
Dim output As Label = New Label
output.Text = "You just typed: " & message.Text
messageForm.Controls.Add(output)
End Sub
End Class
End Namespace

在这个类文件中,我们引入了许多名称空间,从而帮助背后代码的处理。如果我们没有引入这些名称空间的话,就无权使用适当的.NET对象来使背后代码工作。然后我们要指定自己的定制名称空间。这样以来,如果我们愿意的话,就可以在一个文件中包含一个以上的背后代码类。否则,每个背后代码都需要存在于它自己的文件中,你就需要在ASP.NET页面“Page”指令的“Src”属性中指定这个文件。

我们的WebPage类是从普通的Page(页面)对象中继承来的,因此它有权使用它的固有服务。这样,就可以与ASP.NET 页面相互作用,并且如果必要的话,可以在Page (页面)层事件,如Page_Init 和 Page_Load中放置事件。在这个例子中,我们只是想对ASP.NET页面上的提交按钮的点击做出响应,所以我们执行以前在ASP.NET 页面中引用过的submit_OnClick 事件处理器。在事件处理器内部,我们声明并且初始化一个新的Label(标签)服务器控件。然后我们抓取“message”TextBox (信息文本框)服务器控件的内容,并将其分配给新的Label(标签)服务器控件。最后,我们向Form(表单)服务器控件的Controls(控件)集合中增加Label(标签)服务器控件。这样,当页面重新装载时,信息就会被显示在页面上。

要注意我们声明受保护的变量“messageForm”和“message”来存放在ASP.NET页面上对它们相应控件的引用,正是这些声明使我们能够从背后代码类中看到和操作控件。实际上,背后代码类在遗传层次上比ASP.NET 页面本身的位置还要高,因此在ASP.NET 页面上相应的控件只是通过遗传在简单地“执行”背后代码类中的声明。

例子的最后一步是编译背后代码类,这可以通过在命令行执行使用下面的指令完成:

vbc /t:library /out:dotNet101.MySample.dll
/r:System.dll,System.Web.dll CodeBehind.vb

运行了这个指令后,一个名为“dotNet101.MySample.dll”的文件就会出现在目录中,然后将这个文件放在ASP.NET站点的 “bin”目录中。 

时间: 2024-10-02 05:48:24

ASP.NET中的代码分离的相关文章

Asp.net中的代码与表现分离

asp.net .NET Framework Version 2.0出来好久了,VS 2005 beta2也有了,近段时间一直在断断续续地玩Asp.net,发现刚学不久的东西马上就得更新,不更新还真不行. 先从Asp.net中的代码与表现分离说起,这是一个非常有用的功能,特别是在team work中,我想. 在 .NET Framework Version 1.0/1.1中,微软是这么教我们代码与表现分离的:1.首先要在.aspx文件的@Page指令中加入如下一行:<%@ Page Langua

asp.net中using代码语句解释

问题描述 asp.net中using代码语句解释 您好,麻烦帮我解释一下,在代码页面写代码时, 需要在页面的最前面加下面的语句 using JD.Model; 这一句有什么用途?非常谢谢?急用,辛苦了 解决方案 访问另一个命名空间里的类,需要写完整的命名空间,比如 JD.Model.XXX 为了简化,像使用自己的命名空间那样使用,直接写类名XXX即可.需要用using: using JD.Model 解决方案二: using JD.Model; 这个就是你要使用的那个的数据的包 那个包是开发这个

ASP关于页面和代码分离的问题

代码分离|问题|页面|代码分离     为了避免ASP程序和HTML代码混写造成维护困难的情况,本文介绍了一种方法,利用模板来分离程序和页面,使程序设计更加轻松.       在使用ASP制作一个站点的时候,常常会出现一个ASP文件中,程序代码和HTML代码混合的情况.这样子做有许多缺点:    1. 且不说编程时就要对页面布局进行设计和编排,造成代码混乱难懂,不规范:    2. 当需要改变页面外观时,你不仅要改变HTML部份,也需要改变ASP代码,不易维护.       那么,要如何才能避免

ASP.NET中促进代码重用的2种模式

开发复杂的动态ASP.NET应用程序时,必须尽量减少重复代码,提高应用程序的重用性和灵活性.在某些应用程序中,用户采取的不同操作可能具有不同的控制器逻辑,但结果都是相同的视图(例如显示一个产品列表时,可能允许用户增添或删除一件产品.但在控制器引导用户完成了添加或删除过程后,最终显示的都是同样的产品视图,其中含有修改过的数据).  开发可重用的程序逻辑时,第一步就是尽量减少服务器脚本页中的代码数量.脚本页中的逻辑很难(有时甚至不可能)重用,造成视图和控制器分离得不够好.另外,它的测试和调试也显得异

ASP.NET中共用代码

asp.net 在 ASP.NET 中由於可直接使用或替換 DLL 檔,大部分人較不關心動態共用原始碼的問題,由於 ASP.NET 在執行時可動態編譯最新原始碼供網站執行,是否一定要採用 DLL 來執行網頁對於管理者來說,沒有絕對的準則,但對系統或程式設計師來說,動態共用原始碼意味相同原始碼可供各專案同時共用,當在開發或維護某一專案時,針對共用原始碼的變動,亦等同於針對所有專案一起更新,此外亦可降低相同功能類似原始開發維護時間,有助於開發力的提升及專案小組共同開發. 例如早期專案存取資料庫可能以

在ASP.NET中实现Model-View-Controller模式(1)

asp.net|model   背景:   当利用ASP.NET创建Web应用程序时,基于程序的复杂性,必须把程序分割成不同的部分以减少代码的重复及减少日后变革时所引起的改动. 实现策略: 为了解释如何在ASP.NET中实现(MVC)模型-视图-控制器模式,以及说明将软件分离成模型.视图.及控制器角色的好处,在此以一个示例程序为例进行说明.这个示例程序是一个带有下拉框的单页程序,它的功能是显示数据库中的数据.   当用户在下拉框中选择了一个记录,并单击Submit按钮的时候,程序从数据库中搜索与

在ASP.NET中实现MVC模式(二)

asp.net 在ASP.NET中实现Model-View-Controller模式(二) MVC模式形容这种实现方式是一种被动的实现机制,ASP.NET充当了程序执行中的控制器的角色,但程序员必须将具体的事件处理方法添加到事件的响应函数中.如在这个例子中,控制器在页面加载之前调用Page_Load函数并执行其中的代码,当用户点击Submit按钮时由系统调用SubmitBtn_Click函数并执行. 这种将代码都包含在一个文件中的实现方式非常的直接,而且当应用程序很小并不经常修改的时候也可以说是

在ASP.NET中使用用户控件

asp.net|控件 [摘要]ASP.NET中提供的用户控件,可以解决ASP中无法解决的代码重用问题,更方便了调试工作中的错误检查.本文通过用户控件实现方法讲解和一个用户控件例程的实现,进一步验证了利用用户控件解决代码重用的可行性和有效性. [关键字]代码重用.用户控件.@Register指令 ASP.NET提供了比传统ASP更好的代码分离方案.在传统的ASP中,要将用Server. Execute执行的ASP文件或事务对象组件的代码分离开,一般只能将代码分离成几个文件,然后使用"include

ASP.NET中的Inherits、CodeFile、CodeBehind的区别详解_实用技巧

Inherits.CodeFile.CodeBehind 在 ASP.NET 中使用代码隐藏方法来设计Web 窗体,可使页代码能够更清晰地从 HTML 内容中分离到完全单独的文件中. 通常一个 @page 指令如下: 复制代码 代码如下: < %@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplic