找不到ASP.NET母版页

时间:2010-09-13 09:30:18

标签: c# asp.net master-pages scope content-pages

我正在尝试让我的内容页面能够在母版页上访问ASP:Literal。

我的内容页面为:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="viewProduct.aspx.cs" Inherits="AlphaPackSite.viewProduct" Title="Hi there!" %>
<%@ MasterType TypeName="Main" %>

然后我的主页名为Main.master:

<asp:Literal runat="server" ID="lblBasket" />

但是当我尝试做的时候从内容页面开始:

Master.basket.Text = "test";

我明白了:

  

错误46类型或命名空间名称   找不到“主要”(是你吗?   缺少使用指令或   装配参考?)

错误发生在设计师页面上:

public new Main Master {
    get {
        return ((Main)(base.Master));
    }
}

我的主页代码是:

namespace AlphaPack.MasterPages
{
    public partial class Main : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.IsLoggedIn = Request.IsAuthenticated;
        }

        public bool IsLoggedIn
        {
            get { return this.ViewState["isLoggedIn"] as bool? ?? false; }
            set { this.ViewState["isLoggedIn"] = value; }
        }
    }
}

3 个答案:

答案 0 :(得分:2)

设计师是否在您的AlphaPack.MasterPages名称空间内?

MasterType不完全合格,是不是?你也不必提供路径吗? (不熟悉,抱歉)。

如果您使用MasterPageFile引用而不是MasterType,这会如何响应?

答案 1 :(得分:0)

<%@ Page Language="C#" MasterPageFile="~MasterPages/Main.Master" AutoEventWireup="true" CodeBehind="viewProduct.aspx.cs" Inherits="AlphaPackSite.viewProduct" Title="Hi there!" %>

答案 2 :(得分:0)

<%@ Page MasterPageFile="~/MasterPages/Main.master" .. %>
<%@ MasterType VirtualPath="~/MasterPages/Main.master" .. %>

Okey,这就是我在自己的应用程序中的样子:

母版页(Site.master,在根目录中):

<%@ Master Language="C#" AutoEventWireup="True" CodeBehind="Site.master.cs" Inherits="Project.SiteMaster" %>

它是代码隐藏的:

namespace Project
{
    public partial class SiteMaster : System.Web.UI.MasterPage { } 
}

内容页面(Test.aspx,在根目录中):

<%@ Page Language="C#" AutoEventWireup="True" CodeBehind="Test.aspx.cs" Inherits="Project.Test" MasterPageFile="~/Site.master" Title="Test" %>

它是代码隐藏的:

namespace Project
{
    public partial class Test : System.Web.UI.Page { }
}

这就是自动生成的代码的样子:

namespace Project {
    public partial class SiteMaster {            
        /// <summary>
        /// lblBasket control.
        /// </summary>
        /// <remarks>
        /// Auto-generated field.
        /// To modify move field declaration from designer file to code-behind file.
        /// </remarks>
        protected global::System.Web.UI.WebControls.Literal lblBasket;
    }
}

所以创建一个属性但不共享控件本身,只有文本:

public string BasketText
{
    get { return this.lblBasket.Text; } 
    set { this.lblBasket.Text = value; }
}