【问题标题】:Changing elements in master page from content page in vb.net从 vb.net 的内容页面更改母版页中的元素
【发布时间】:2010-04-13 20:03:54
【问题描述】:

我有一个名为 a1.aspx 的页面,Masterpagefile = a1_master.master。现在,母版页有自己的 div 和图像用于设计目的。我想要一种方式,当我加载 a1.aspx 时,某些选择的和图像应该被隐藏(可见 = false)。我怎样才能做到这一点? 如何从内容页面更改母版页中 div 或图像的可见性?

【问题讨论】:

    标签: asp.net vb.net master-pages


    【解决方案1】:

    为您的母版页声明一个接口,例如:

    interface IMasterPageControls{
     Image MyImage { get; }
    }
    

    并在您的母版页上实现它:

    public class MasterPage : IMasterPageControls{
     public Image MyImage {
       get {  
         // whatever it takes to get the correct object...
         return (Image)this.Page
                               .FindControl("nameOfContainer")
                               .FindControl("nameOfImage");
       }
     }
    }
    

    & 然后在你的页面中你可以这样做:

    Image img = (this.Master as IMasterPageControls).MyImage;
    

    这将为您提供图像的句柄并消除@Matthew 提到的一些问题...

    HTH

    【讨论】:

    • 注意:这是 C# 语法,但 VB.net 的概念保持不变
    【解决方案2】:

    可能你想使用 FindControl 和 Master,像这样:

    Image myImage = (Image)Master.FindControl("nameOfImage");
    myImage.Visible = false;
    

    查看this MSDN page 了解更多信息和示例。

    【讨论】:

    • 请注意这是 C# 语法。您需要更改它以适应 VB 语法。另请注意,根据链接,这仅在 asp:Image 不在 ContentPlaceHolder 内时才有效。如果它在其中,则必须先找到 ContentPlaceHolder,然后在其上使用 FindControl 来查找 asp:Image。
    • -1:IMO - 让页面知道“名称”或母版页中表达的控件层次结构不是好的编程习惯。对控件名称和/或其位置的任何更改都会影响所有代码。所以我也不喜欢 MSDN 示例 :)
    【解决方案3】:

    为母版页创建一个属性

    public partial class YourMasterPage : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        { }
    
        public bool HideImage
        {
            get { return imgYourImage.Visible; }
            set { imgYourImage.Visible = value; }
        }
    }
    

    在您的内容页面中:

    (this.Master as YourMasterPage).HideImage = true;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      相关资源
      最近更新 更多