[英]how to call the master page method in content page but which is not inheritted from the master page
[英]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.