【问题标题】:2 master pages one user control, how do I find what master page is being used?2 个母版页 一个用户控件,我如何找到正在使用的母版页?
【发布时间】:2015-11-17 03:21:14
【问题描述】:

所以我有 2 个母版页和一个几乎用于每个页面的用户控件。页面可能有 2 个母版页之一,并且两个母版页都有一个共同的属性。这是我需要访问的列表变量。我如何知道正在使用哪个母版页然后访问它?

我在努力

MasterPage mp = (MasterPage)this.Page.Master;

但是当我调试时,我没有看到 list 属性。 mp.List 不起作用。关于如何获得此属性的任何想法?

提前致谢

【问题讨论】:

  • 母版页是否实现了一个接口,您可以转换到该接口以获取属性?
  • 没有母版页没有实现任何接口

标签: asp.net master-pages


【解决方案1】:

考虑使用简单的界面来简化此操作。

public interface IHasProperty 
{
   List<string> MyVariable {get;set;}
}

public partial class MasterPage1 : (other stuff), IHasProperty
{
   List<string> MyVariable {get;set;}
}

public partial class MasterPage2 : (other stuff), IHasProperty
{
   List<string> MyVariable {get;set;}
}

然后从用户控件中,您可以使用类似这样的东西来访问它。

var myPropPage = Page.Master as IHasProperty;
if (myPropPage == null)
{
   //this property isnt on the page.
   return;
}

myPropPage.MyVariable.Add("new Value");// or whatever you needed to do with it. 

【讨论】:

    【解决方案2】:

    在您的 aspx 上添加对母版页的强类型引用,如下所示:

    <%@ MasterType VirtualPath="~/Site.Master" %> 
    

    然后在后面的代码中你可以做到这一点。Master 无需强制转换,列表应该是可访问的。

    【讨论】:

    • 我有 2 个母版页,它们取决于正在加载的页面。用户控制只是所有页面中的共同点。
    • 母版页不应该依赖于它的子页。应该反过来
    • 我在看到您的评论后尝试进行编辑,而我真正的意思是该页面具有用户控制权,并且根据页面选择了母版页。我想我可能已经解决了这个问题。一旦我让它工作没有任何错误,我将发布解决方案
    • 那么您尝试从子页面或子页面内的用户控件访问母版页?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    相关资源
    最近更新 更多