0

マスター ページが動的に設定される ASP.NET コンテンツ ページがあります。どちらのマスター ページにも、印刷ボタンと、ボタンのクリック イベントに関連付けられたイベント ハンドラーが含まれています。残念ながら、最初に割り当てられていないマスター ページからイベントに動的にアクセスしようとすると、実行時エラーが発生します。

以下にコード スニペットを示します。

    <%@ Page Language="VB" MasterPageFile="~/Evaluators/masEvaluators.master" AutoEventWireup="false"
      CodeFile="EDF_Instructions.aspx.vb" Inherits="Evaluators_EDF_Instructions" Title="EDF - Instructions" %>


    Page_Load():
      Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim strPageTitle As String = "Evaluator Data Form - Instructions"

        If Page.MasterPageFile.Contains("masEvaluators.master") Then
          Dim mp As Evaluators_masEvaluators = CType(Me.Master, Evaluators_masEvaluators)
          AddHandler mp.SaveEDF, AddressOf imgbtnPrint_Click

        ElseIf Page.MasterPageFile.Contains("masStaff.master") Then
          Dim mp As Evaluators_masEvaluators = CType(Me.Master, Evaluators_masEvaluators)
          CType(Page.Master.FindControl("imgbtnPrint"), ImageButton).Visible = True

          AddHandler mp.SaveEDF, AddressOf imgbtnPrint_Click
        End If  

ページをロードして「masStaff.master」マスターページを参照すると、次のエラーが発生します。

System.InvalidCastException: Unable to cast object of type 'ASP.staff_masstaff_master' to type 'Evaluators_masEvaluators'. at Evaluators_EDF_Instructions.Page_Load....

コンテンツ ページに印刷ボタンを追加することで問題を解決できますが、それではマスター ページを使用する目的が失われます。

この問題の解決策はありますか? この問題を Web で調査するのに何時間も費やしましたが、まだ解決策が見つかりません。

4

1 に答える 1