aspx页面中的访问函数到母版页

时间:2010-09-06 05:32:46

标签: c# .net asp.net

我有a.master和b.aspx。

我的aspx页面中有一些功能。

如何在a.master页面中访问该功能。

谢谢

4 个答案:

答案 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)

要访问,请:

  1. 将该方法设为static方法。
  2. 将您的代码移至App_Code文件夹。
  3. 将您的代码移出Web项目,转移到某个通用程序集中,并将其用作参考。