如何在页面和类之间共享代码

问题描述 投票:0回答:1

这看起来应该很简单,但我想不通。我正在尝试在页面隐藏代码和继承页面类的类之间共享代码。

重要的一点是,我需要 Class 继承 Page 类,因为我将使用仅(我认为)与 Page 类一起工作/在 Page 类上工作的对象和方法。例如,我将使用“响应”和“会话”对象。稍后我将使用其他页面对象和方法(例如 GridView、Panels 等)。我想将公共页面相关代码保存在共享类中。

下面的示例代码。

我的测试页。代码隐藏页面指的是共享类中的函数。当我加载此页面时,它在引用“响应”对象的第一行抛出错误(表示它未声明并且不能在此上下文中使用)。

MyTestPage.aspx.vb:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="MyTestPage.aspx.vb" Inherits="MyTestPage" %>
<!DOCTYPE html>
<html lang="en">
<head>
    <title>My Test Page</title>
</head>
<body>
    <form id="form1" runat="server" class="container-fluid">
        <p>My Test Page</p>
    </form>
</body>
</html>

MyTestPage.aspx.vb:
Partial Class MyTestPage
    Inherits System.Web.UI.Page

    Dim sMYSHAREDCLASS As New Class1

    Private Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        If sMYSHAREDCLASS.MyTestFunction = True Then
            Response.Write("hello")
        End If
    End Sub
End Class

班级。这是共享类的共享代码。我喜欢使用将在多个页面上使用的 Page 对象和方法。

Public Class Class1
    Inherits System.Web.UI.Page

    Function MySharedTestFunction() As Boolean
        Response.Buffer = True
        Session("MySession") = False
        Return (True)
    End Function
End Class
asp.net vb.net class code-behind
1个回答
0
投票

嗯,你正在创建一个类的新实例。

它不能继承其他不存在的东西,或者使用其他类的东西,包括页面类,除非你告诉它!!!!

所以,类的某些实例不能突然使用/享受/触摸/使用或具有当前页面的上下文,因为如果我在浏览器中打开 5 个页面,那个当前页面是什么????

因此,您需要创建该类以同时传递它应该处理的页面。

此外,此要求不称为继承,您根本不需要,也根本不在这里使用继承!!!@!

所以,你的页面类可以是这样的:

Public Class Class1

    Dim MyPage As Page

    Public Sub New(MePage As Page)

        MyPage = MePage

    End Sub


    Public Function MySharedTestFunction() As Boolean
        MyPage.Response.Buffer = True
        MyPage.Session("MySession") = False
        Return (True)
    End Function


End Class

现在,您的网页代码将是这样的:

Dim cMyPage As New Class1(Me)

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

End Sub

所以,当我们创建 class1 的“实例”时,我们同时也简单地传递了我们正在处理的当前页面(我)。

所以,现在,任何代码,网页代码后面的任何地方都可以去:

  cMyPage.MySharedTestFunction()

所以那个类根本不需要继承任何东西。它所需要的只是对最初创建该类的网页的工作引用。

现在,在该类中,您可以使用 MyPage 引用该页面并在该页面上执行任何操作。

© www.soinside.com 2019 - 2024. All rights reserved.