从派生页面访问母版页上的用户控件属性?这曾经工作过!

时间:2011-07-01 20:57:48

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

这让我发疯了。在过去,我已经能够拥有一个母版页,在该页面上放置一个用户控件,并创建一个引用该usercontrol的只读属性,并从派生页面访问usercontrol及其所有属性。现在我收到此错误: “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";
    }

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

更新: 我可能弄错了。回想一下旧代码,我确实在页面指令中添加了对派生页面上usercontrol的引用。

Perhpas有一种不需要添加指令的方法吗?

1 个答案:

答案 0 :(得分:0)

我错了。回想一下旧代码,我确实在页面指令中添加了对派生页面上usercontrol的引用。