Не удается найти главную страницу ASP.NET - PullRequest
4 голосов
/ 13 сентября 2010

Я пытаюсь, чтобы моя страница контента имела доступ к 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 Не удалось найти тип или имя пространства имен «Main» (отсутствует директива using или ссылка на сборку?)

Ошибка на странице конструктора:

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 ]

2 голосов
/ 13 сентября 2010

Является ли дизайнер в вашем AlphaPack.MasterPages пространстве имен?

MasterType не полностью квалифицирован, не так ли?Разве вы не должны указывать путь?(Не знаком с, извините).

Как это отреагирует, если вместо MasterType?

используется ссылка MasterPageFile?
0 голосов
/ 13 сентября 2010
<%@ Page MasterPageFile="~/MasterPages/Main.master" .. %>
<%@ MasterType VirtualPath="~/MasterPages/Main.master" .. %>

Хорошо, вот как это выглядит в моем собственном приложении:

Мастер-страница (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; }
}
0 голосов
/ 13 сентября 2010
<%@ Page Language="C#" MasterPageFile="~MasterPages/Main.Master" AutoEventWireup="true" CodeBehind="viewProduct.aspx.cs" Inherits="AlphaPackSite.viewProduct" Title="Hi there!" %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...