繁体   English   中英

aspx页面到母版页的访问功能

[英]access function in aspx page to master page

我有a.master和b.aspx。

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

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

谢谢

当然,您可以将b.aspx中的方法公开,以在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?

假设您要从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");
        }

        ....
    }
}

正如其他人所说,这样做是可能的。 但是,这是一种奇怪的处理方式。 如果您想以其他方式做任何事情,您可能会变得更好。 母版页的整个想法是它“包装”许多内容页面。 如果您的内容页面没有您要调用的功能,该怎么办?

您可以确保所有内容页面都具有该功能,但是为什么不将其放在母版页中呢?

也许,如果您对自己想要做的更好的事情感到失望,我们可能会建议您采用一种更好的处理方式。

要访问,请执行以下任一操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM