【问题标题】:Accessing Event Handlers from Two Different Master Pages从两个不同的母版页访问事件处理程序
【发布时间】:2013-06-27 04:09:08
【问题描述】:

我有一个 ASP.NET 内容页面,其中母版页是动态设置的。两个母版页都包含一个打印按钮和一个用于按钮单击事件的关联事件处理程序。不幸的是,当我尝试从最初未分配的母版页动态访问事件时收到运行时错误。

下面是代码sn-ps:

    <%@ 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....

我可以通过向内容页面添加打印按钮来解决问题,但这违背了使用母版页的目的。

这个问题有解决办法吗?我在网络上花了很多时间研究这个问题,但目前还没有找到解决方案。

【问题讨论】:

    标签: asp.net event-handling master-pages


    【解决方案1】:

    您不应该将 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 的命名空间。

    【讨论】:

    • Skyp,"Staff_masStaff" 是“masStaff”母版页的类名称。 “masStaff.master”与“masEvaluators.master”页面位于不同的文件夹中。
    • 我编辑了我的回复,以便“员工”母版页的类型正确(我只能猜测)。
    • Skyp,我不熟悉“**”结构。它有什么作用?谢谢!
    • Brian,我在代码的前面和后面添加了 **,以便您可以更轻松地看到它们,当然您可以删除它们 ;)
    • Skyp,感谢您纠正我在原始问题中的错字。代码应为“ElseIf Page.MasterPageFile.Contains("masStaff.master") Then Dim mp As Staff_masStaff = CType(Me.Master, Staff_masStaff)”。现在导致编译错误。即使页面顶部的“Imports Staff_masStaff”也会出现此错误。任何其他想法。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多