我有a.master和b.aspx。
我的aspx页面中有一些功能。
如何在a.master页面中访问该功能。
谢谢
答案 0 :(得分:1)
当然,您可以将b.aspx中的方法设为public,以便在a.master中调用它。不过我建议你仔细考虑你的设计。因为它非常奇怪,就像你从其父类调用子类的方法一样(尽管理论上可行)。在修改之前,问问自己:
Is it necessary to call this method in the master page? If yes, do I have a better place to put the method?
答案 1 :(得分:1)
假设您想从a.master中调用b.aspx中的Foo。所以首先是你已经使方法内部(或公共),然后你可以使用如下面的代码在母版页中调用该方法。
var page = (b)this.Page;
page.Foo();
请注意,b将是b.aspx中类名后面的代码。请注意,如果您使用另一个页面c.aspx并使用相同的master a,则上面的代码将失败。通常,我会说从master调用特定于页面的函数没有意义,除非某些基页类中存在函数,在这种情况下,您应该转换到该基页类。
编辑:Asif要求的更详细的示例:
考虑您的内容页面b.aspx,例如
<%@ Page Language="C#" MasterPageFile="a.Master" Title="Page B" AutoEventWireup="true"
CodeBehind="b.aspx.cs" Inherits="YourProject.b" %>
在代码隐藏文件(b.aspx.cs)中,你有一个方法Foo,如
namespace YourProject
{
public partial class b : System.Web.UI.Page
{
void Foo(string someParameter)
{
Label1.Text = someParameter
}
...
}
}
现在在a.master页面的代码后面(a.master.cs)
namespace YourProject
{
public partial class a : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
b contentPage = (b)this.Page;
contentPage.Foo("Hello");
}
....
}
}
答案 2 :(得分:1)
正如其他人所说,有可能这样做。然而,这是一种奇怪的做事方式。你可能会以不同的方式做任何你想做的事情。母版页的整体思想是“包装”多种内容页面。如果您的内容页面没有您要调用的功能,该怎么办?
您可以确保所有内容页面都具有该功能,但为什么不将它放在母版页中呢?
也许如果你想要做得更好一点,我们可以建议你更好地处理事情。
答案 3 :(得分:0)
要访问,请:
static
方法。