我有一个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....
我可以通过向内容页面添加打印按钮来解决问题,但这会破坏使用母版页的目的。
这个问题有解决方法吗?我花了很多时间在网上研究这个问题,但还没有找到解决方案。
答案 0 :(得分:0)
不应该将ElseIf中的母版页强制转换为staff_masstaff_master
所以这样:
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 **Staff_masStaff** = CType(Me.Master, **Staff_masStaff**)
CType(Page.Master.FindControl("imgbtnPrint"), ImageButton).Visible = True
AddHandler mp.SaveEDF, AddressOf imgbtnPrint_Click
End If
您也可以导入定义Staff_masStaff
的命名空间。