我有一个包含LinkButton的用户控件,当单击它时,会调用父类中的sub。单击LinkButton时,该子被称为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" />
顺便说一句,“父”类本身就是在制表符容器内操作的用户控件。我不认为这有所作为,但我认为我应该提一下以防万一。
答案 0 :(得分:0)
正如WozzeC所说,新建MainPage意味着它与Dashboard实例相关联,而不是其父项。
我现在对网络内容不太热,但我会说MainPage包含一个仪表板。如果是这种情况,更好的设计是为Dashboard提供对MainPage的引用,然后使用该引用调用Dashboard_Clicked()方法。
或者也许让Dashboard举起一个MainPage可以收听的事件?