【问题标题】:Access Master Page Object on Child Pages访问子页面上的母版页对象
【发布时间】:2014-04-13 02:30:19
【问题描述】:

我需要访问在我的母版页的代码隐藏中创建的对象。我有一个母版页和十几个子页,子页需要访问这个对象。母版页代码如下:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["Manager"] == null) Response.Redirect("/Login");
        Manager Mng = (Manager)Session["Manager"];
    }

在我的子页面上,我希望能够做到这一点:

int _ID = Mng.ID

但“Mng”在这种情况下并不存在。请指教。谢谢。

【问题讨论】:

  • 你有没有尝试将masterpage的代码隐藏在App_Code目录中?
  • 他正在访问用户控件,而不是代码隐藏...
  • 答案添加了一个属性,该属性使母版页中的某些内容(无论是代码隐藏还是页面本身的控件都无关紧要)可供所有子页面访问。

标签: c# asp.net master-pages code-behind


【解决方案1】:

您必须在 master 上添加一个公共属性,例如:

public Manager Mng { get; set; }

将此属性设置为 manager 值。在任何页面或用户控件中,您都可以:

((SiteMaster)this.Page.Master).Mng

获取参考。请注意,您必须强制转换站点管理员,或创建如下界面:

public interface IMaster
{
   Manager Mng { get; }
}

让您的母版页实现此接口,并将母版转换为 IMaster 类型:

((IMaster)this.Page.Master).Mng

【讨论】:

  • 你让我在第一行 - Mng 不是公开的,因为它在那个上下文中是无效的(因为它在一个方法中)。移动它解决了我所有的问题!我可以通过显式转换来访问它。谢谢!
【解决方案2】:

泽基,

当您使用@MasterType 指令时, 您可以在母版页上引用成员,如下所示 示例(VB.Net):

CompanyName.Text = Master.CompanyName

页面的 Master 属性已经输入到 MasterPage_master。

看看http://msdn.microsoft.com/en-us/library/c8y19k6h(v=vs.100).aspx 这可能会对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    相关资源
    最近更新 更多