4

コンテンツページをマスターページの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; }
        }
    }
}
4

3 に答える 3

2

デザイナーはあなたのAlphaPack.MasterPages名前空間内にいますか?

MasterType完全に資格がありません、そうすべきですか?パスも提供する必要はありませんか?(よく知らない、ごめんなさい)。

MasterPageFileの代わりに参照を使用した場合、これはどのように応答しますMasterTypeか?

于 2010-09-13T09:36:57.630 に答える
0
<%@ Page Language="C#" MasterPageFile="~MasterPages/Main.Master" AutoEventWireup="true" CodeBehind="viewProduct.aspx.cs" Inherits="AlphaPackSite.viewProduct" Title="Hi there!" %>
于 2010-09-13T09:36:37.070 に答える
0
<%@ 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; }
}
于 2010-09-13T09:36:47.397 に答える