通过用户控件调用父类中的子时的空对象引用

时间:2012-10-26 13:39:58

标签: ajax vb.net user-controls

我有一个包含LinkBut​​ton的用户控件,当单击它时,会调用父类中的sub。单击LinkBut​​ton时,该子被称为OK,但该子对象中引用的对象都是触发空对象引用错误。我做错了什么?

为了让事情尽可能短,我只在他们的班级中展示相关的潜艇。

以下是用户控件的 LinkClick 子:

Public Class Dashboard
    Inherits System.Web.UI.UserControl

        ...(Other code here)...

        Private Sub LinkClick(sender As Object, e As CommandEventArgs)

            Dim action = e.CommandArgument
            Dim cls As New MainPage
            cls.Dashboard_Clicked(action)

        End Sub
End Class

这是通过LinkClick调用sub的父类:

Imports System.IO

Public Class MainPage
    Inherits System.Web.UI.UserControl

    ...(Other code here)...

    Public Sub Dashboard_Clicked(action)

        mpe.Show()

    End Sub

End Class

这是父控件上的标记,它显示了用户控件的标记以及我在sub中尝试引用失败的对象的标记:

<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="TSEnterHours.ascx.vb"
Inherits="App.MainPage" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<%@ Register Src="Dashboard.ascx" TagName="Dashboard" TagPrefix="uc" %>

<uc:Dashboard SourceProcName="Dashboard.QueryName" runat="server">
    <DashboardParameters>
        <dashboardparameter name="aID" useenvironmentvalue="aID" />
    </DashboardParameters>
    <Items>
        <item type="hyperlink" Action="PTO_Clicked" label="YTD PTO Taken" field="TotalPTO" />
    </Items>
</uc:Dashboard>

<!-- Other code... -->

<asp:ModalPopupExtender ID="mpe" runat="server" TargetControlID="btnDummy" PopupControlID="PTOPanel"
BackgroundCssClass="ModalPopupBG" OkControlID="btnDummy" CancelControlID="btnDummy"
BehaviorID="mpeBehavior_PTO" />

顺便说一句,“父”类本身就是在制表符容器内操作的用户控件。我不认为这有所作为,但我认为我应该提一下以防万一。

1 个答案:

答案 0 :(得分:0)

正如WozzeC所说,新建MainPage意味着它与Dashboard实例相关联,而不是其父项。

我现在对网络内容不太热,但我会说MainPage包含一个仪表板。如果是这种情况,更好的设计是为Dashboard提供对MainPage的引用,然后使用该引用调用Dashboard_Clicked()方法。

或者也许让Dashboard举起一个MainPage可以收听的事件?