在VB.NET Web应用程序中的Web窗体之间共享代码

希望有人可以提出一种更好的在网站应用程序页面之间共享Web表单代码的方法。用一个非常基本的示例进行说明,假设我有两个名为“ Page1.aspx”和“ Page2.aspx”的网页,它们的代码分别位于分别名为“ Page1.aspx.vb”和“ Page2.aspx.vb”的页面后面。

两个页面都有一个执行相同操作的简单按钮对象。通常,您只需要在两个页面后面的代码中添加click事件,但是我想做的是将它放置在共享的公共类中一次。

两个页面的HTML

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Page1.aspx.vb" Inherits="Page1" %>
<html>
<head runat="server"></head>
<body>
    <form id="Form1" runat="server">
        <asp:Button ID="Button1" runat="server" Text="Button" />
    </form>
</body>
</html>

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Page2.aspx.vb" Inherits="Page2" %>
<html>
<head runat="server"></head>
<body>
    <form id="Form1" runat="server">
        <asp:Button ID="Button1" runat="server" Text="Button" />
    </form>
</body>
</html>

代码:

Partial Class Page1
    Inherits system.web.UI.Page
    'I don't want to put the button click event here. How do I reference it from below?
End Class

Partial Class Page2
    Inherits system.web.UI.Page
    'I don't want to put the button click event here. How do I reference it from below?
End Class

Public Class SharedCode
    Inherits system.web.UI.Page

    'I want to put the button click event here.
    Private Sub Button1_Click(sender As Object,e As EventArgs) Handles Button1.Click
        Response.Write("hello")
    End Sub
End Class

请注意,按钮和按钮的代码完全相同。能够将代码保存在一个地方会很高兴,这样您就不必一遍又一遍地重复代码以及分别进行管理。尤其是在页面很多的情况下。

我使用的一种有效的方法是在两个页面共享的页面后面仅使用一个代码:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="SharedCode.vb" Inherits="SharedCode" %>

上面,对于“ Page1.aspx”和“ Page2.aspx”,我没有在页面后面使用相同的代码,而是分别使用不同的/特定的“ CodeFile”和“ Inherits”值。然后,对于特定于这些页面的代码,我在每个页面中添加内联<script runat="server">标签。

同样,此方法有效,但是还有更好的方法吗?

ying_09222 回答:在VB.NET Web应用程序中的Web窗体之间共享代码

是的,通过创建一个用作页面的业务经理或“引擎”的类,有一个很好的方法,然后两个页面都可以在文件后面以及在每个按钮的buttonClick事件内部具有各自独立的代码如果您的班级是静态的,那么您只需要在页面上进行任何操作就可以调用班级(静态或不静态):

Private Sub Button1_Click(sender As Object,e As EventArgs) Handles Button1.Click

  SiteEngine.DoWork()

End Sub

如果SiteEngine类不是静态的,则必须在调用DoWork方法之前创建它的实例

这只是处理问题和避免代码重复的多种方法之一,在大多数情况下,这是不需要的。

,

欢迎使用分层应用程序设计。

序言

ASP.NET Web窗体和Visual Studio通过将控件拖放到HTML设计器上,使创建应用程序变得异常容易。伴随页面的代码隐藏文件包含应用程序的所有事件处理,数据访问和业务逻辑。这种方法的问题是,所有问题都混杂在一起,导致测试问题并导致业务逻辑重复,因为很难重用与特定视图固有联系的逻辑(ASPX页) 。有时这称为 Smart UI反模式

分离问题

智能UI反模式的解毒剂是对应用程序进行分层的概念。对应用程序进行分层是关注点分离的一种形式,可以通过命名空间,文件夹或单独的项目来实现。以下是最低限度的要求,并简化了一下,但您明白了:

  1. 在Visual Studio中创建一个新的空白解决方案,并将其命名为MyWebSite
  2. 通过右键单击解决方案名称并选择添加>新建项目,将新的类库项目添加到解决方案。将新项目命名为MyWebSite.Presentation。删除默认创建的Class1.vb
  3. 通过选择添加>新建项目,然后选择Web应用程序项目,将新的Web应用程序添加到项目中。将项目命名为MyWebSite.Web并将其设置为“启动项目”(通过右键单击它)。
  4. 右键单击MyWebSite.Web项目,然后将项目引用添加到MyWebSite.Presentation项目。

您的分层项目结构现已完成。

presentation 项目添加新类,并将其命名为Presenter

Public Class Presenter
    Public Function Display() As String
        Return "hello"
    End Function
End Class

现在,在ASPX页面的按钮单击事件处理程序中,您可以编写:

Protected Sub Button1_Click(sender As Object,e As EventArgs)
    Dim presenter As New Presentation.Presenter

    Response.Write(presenter.Display)
End Sub

同样,该示例非常简单,但是可以让您开始如何将代码分成几层。我选择将各层分为项目;但是,使用文件夹或名称空间同样有效。

本文链接:https://www.f2er.com/3088385.html

大家都在问