簡體   English   中英

如何在內容頁面中使用主頁面中的方法

[英]How to use a method in a Master Page from a Content Page

我正在用C#編寫ASP.NET 4應用程序。 我有一個母版頁,其中我有以下方法:

public void DisplayMessage(string input)
{
   Label myMessageDisplayer = (Label)FindControl("uxMessageDisplayer");
   myMessageDisplayer.Text = input;
}

我可以從內容頁面調用此方法嗎?
目前,我在內容頁面中使用此代碼:

Master.DisplayMessage("Item has been inserted.");

我收到此錯誤:

'System.Web.UI.MasterPage'不包含'DisplayMessage'的定義,也沒有找到接受類型'System.Web.UI.MasterPage'的第一個參數的擴展方法'DisplayMessage'(你是否缺少using指令?或匯編參考?)

任何幫助將不勝感激。

您可以像其他人一樣使用強制轉換來獲取您的母版頁類型,或者您可以將MasterType指令添加到頁面標記中(在頂部,標准<%@ Page %>指令所在的位置):

<%@ MasterType TypeName="YourNamespace.YourMasterPageType" %>

然后在您的頁面代碼中,您可以擁有示例中的內容:

Master.DisplayMessage("Item has been inserted.");

MasterType指令可從.NET 2向上提供。

您需要將Master轉換為實際的Masterpage類型

// MyMasterPage is the type of your masterpage
((MyMasterPage)Master).DisplayMessage("Item has been inserted.");

您還可以在內容頁面的頂部添加MasterType指令以實現相同的目的:

<%@ MasterType VirtualPath="~/MyMasterPage.master" %>

然后你可以使用:

Master.DisplayMessage('Item has been inserted.');

我做了/嘗試這個:

我的控件(MenuEsquerdo.ascx)

<%--<%@ MasterType VirtualPath="~/Site.Master" %>--%>
<%--<%@  MasterPageFile="~/Site.Master" %>--%>
<%--<%@ MasterType TypeName="Delivery.SiteMaster" %>--%>
<%--<%@ MasterType VirtualPath="~/Site.Master" %>--%>
<%@ MasterType TypeName="Delivery.SiteMaster" %>

我的設計師控件(MenuEsquerdo.ascx.designer.cs)

public new Delivery.SiteMaster Master {
            get {
                return ((Delivery.SiteMaster)(base.Master)); // 'System.Web.UI.UserControl' does not contain a definition for 'Master'
            }
        }

我的代碼背后(MenuEsquerdo.ascx.cs)

RepeaterListaMenuEsquerdoCtr.DataSource = this.Master.ClassMercadorias.Take(20);
RepeaterListaMenuEsquerdoCtr.DataBind();

知道,我怎么解決這個問題:'System.Web.UI.UserControl'不包含'Master'的定義?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM