クリックすると、親クラスのサブを呼び出す LinkButton を含むユーザー コントロールがあります。LinkButton をクリックするとサブは OK と呼ばれますが、そのサブ内で参照されているオブジェクトはすべて null オブジェクト参照エラーを引き起こしています。私は何を間違っていますか?
できるだけ短くするために、クラス内の関連するサブルーチンのみを示しています。
ユーザー コントロールの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 を介して呼び出されるサブを持つ親クラスを次に示します。
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
親コントロールのマークアップを次に示します。これは、ユーザー コントロールのマークアップと、サブで参照しようとして失敗したオブジェクトのマークアップを示しています。
<%@ 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" />
ところで、「親」クラスは、それ自体がタブ コンテナー内で動作するユーザー コントロールです。それが違いを生むとは思いませんが、念のため言及する必要があると思いました。