如何在内容页面中使用母版页中的方法

Gib*_*boK 8 c# asp.net master-pages

我正在用C#编写ASP.NET 4应用程序.我有一个母版页,其中我有以下方法:

public void DisplayMessage(string input)
{
   Label myMessageDisplayer = (Label)FindControl("uxMessageDisplayer");
   myMessageDisplayer.Text = input;
}
Run Code Online (Sandbox Code Playgroud)

我可以从内容页面调用此方法吗?
目前,我在内容页面中使用此代码:

Master.DisplayMessage("Item has been inserted.");
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

'System.Web.UI.MasterPage'不包含'DisplayMessage'的定义,并且找不到接受类型'System.Web.UI.MasterPage'的第一个参数的扩展方法'DisplayMessage'(你是否缺少using指令?或汇编参考?)

任何帮助将不胜感激.

Gra*_*ark 7

您可以像其他人一样使用强制转换来获取主页面类型,或者您可以将MasterType指令添加到页面标记中(在顶部,标准<%@ Page %>指令所在的位置):

<%@ MasterType TypeName="YourNamespace.YourMasterPageType" %>
Run Code Online (Sandbox Code Playgroud)

然后在您的页面代码中,您可以拥有示例中的内容:

Master.DisplayMessage("Item has been inserted.");
Run Code Online (Sandbox Code Playgroud)

MasterType指令可从.NET 2向上获得.


Geo*_*ord 6

您需要将其Master转换为实际的母版页类型

// MyMasterPage is the type of your masterpage
((MyMasterPage)Master).DisplayMessage("Item has been inserted.");
Run Code Online (Sandbox Code Playgroud)

您还可以在内容页面的顶部添加MasterType指令以实现相同的目的:

<%@ MasterType VirtualPath="~/MyMasterPage.master" %>
Run Code Online (Sandbox Code Playgroud)

然后你可以使用:

Master.DisplayMessage('Item has been inserted.');
Run Code Online (Sandbox Code Playgroud)