繁体   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