【问题标题】:Access UserControl property on MasterPage from derived page? This used to work!从派生页面访问 MasterPage 上的 UserControl 属性?这曾经奏效!
【发布时间】:2011-08-16 21:02:02
【问题描述】:

这快把我逼疯了。在过去,我能够拥有一个母版页,在该页上放置一个用户控件,并创建一个引用该用户控件的只读属性,并从派生页访问该用户控件及其所有属性。现在我收到此错误: “XXXX”类型是在未引用的程序集中定义的。您必须添加对程序集“App_Web_2zw4yn55, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”的引用。
我查看了较旧的项目,发现我能够做到这一点。我现在正在使用 .Net 4.0,但不确定这是一个问题。

我的页面声明如下所示...

母版页:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Main.master.cs" Inherits="MasterPages_Main" %>
<%@ Register src="../UserControls/WebUserControl.ascx" tagname="WebUserControl" tagprefix="uc1" %>

<uc1:WebUserControl ID="WebUserControl1" runat="server" />

母版页的代码隐藏:

public UserControls_WebUserControl TheWebControl { get { return this.WebUserControl1; } }

派生页面:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/Main.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ MasterType VirtualPath="~/MasterPages/Main.master" %>
<%@ Reference VirtualPath="~/MasterPages/Main.master" %>

派生页面的代码隐藏:

protected void Page_Load(object sender, EventArgs e)
    {
        Master.TheWebControl.Pagetitle = "Hey";
    }

如果我在派生页面的页面声明中为用户控件添加一个引用,它可以工作,但我不应该这样做。我不确定发生了什么。我以前从来没有这样做过。我唯一能想到的是我的 web.config 设置不同,但即使在我的旧页面中,我也没有看到对用户控件的任何直接引用。

更新: 我可能弄错了。再次回顾旧代码,我确实在页面指令中添加了对派生页面上用户控件的引用。

也许有另一种方法可以做到这一点而不必添加指令?

【问题讨论】:

  • 可能没有帮助但值得一试...通常当我看到这些类型的错误时,并不是因为实际存在特定问题,而只是 aspnet 编译器混淆了一些编译文件。您是否尝试过触摸 web.config 或回收该 Web 上的应用程序池以确保所有内容都被重新编译?还可以尝试清除临时 ASP.NET 文件中的所有内容。可能是您实际上遇到了真正的错误,但值得一试:)

标签: c# asp.net .net-4.0 master-pages


【解决方案1】:

我错了。再次回顾旧代码,我确实在页面指令中添加了对派生页面上用户控件的引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多