【问题标题】:How can I set a property on a master page from a custom control?如何通过自定义控件在母版页上设置属性?
【发布时间】:2013-10-09 13:33:28
【问题描述】:

我有一个母版页。

我正在开发一个继承母版页的测试页。

母版页有一个公共属性,可以访问它来打开和关闭可见性。

我有一组可以包含在测试页中的控件。这些控件之一需要能够设置母版页控件的可见性。

通常在后面的页面代码中我只会说;

this.Master.ShowItem = false;

我不知道如何能够从自定义控件访问此属性?

【问题讨论】:

    标签: c# asp.net custom-controls


    【解决方案1】:

    您只需要将 master 转换为正确的类型。假设你的主人的类型是SiteMaster

    var master = this.Page.Master as SiteMaster;
    if(master != null)  // cast failed, your master is a different type
    {
        master.ShowItem = false;
    }
    

    所以导航是:

    【讨论】:

    • 请在不发表评论的情况下投下更多反对票。我是否忽略了一些明显的事情?
    • 我没有否决任何人,谢谢,我会努力实现这一点。
    【解决方案2】:

    (对不起,由于我的声誉,我无法制作 cmets,因此作为答案)

    提示:确保您要在母版页中访问的属性设置为公开。

    注意这一点,Tim Schmelter 的解决方案运行良好。

    【讨论】:

      【解决方案3】:

      我不相信您可以直接设置母版页的属性。 但是您可以找到母版页的控件,并使它们在 conternt 页面中可见/不可见,如下所示:

      ((Label)this.Page.Master.FindControl("IdOfTYurControl")).Visible = false;
      

      【讨论】:

      • 您访问母版页的技术可以工作,但说您不能设置属性肯定是不正确的。
      • 但是即使它有效,你也不知道明天当有人要更正 ID 错字时它是否仍然有效。依靠可以从任何地方访问的东西的 ID 并不是那么好。此外,通过这种方式您可以公开完整的控制权,如果有人决定将Label 更改为TextBox 左右怎么办?你没有控制权。最重要的是,它不是自我解释的。属性是强类型的,具有编译时安全性、智能感知支持甚至文档。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多