![](/img/trans.png)
[英]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.