2010-04-13 78 views
2

我有一個名爲a1.aspx的頁面,其中Masterpagefile = a1_master.master。現在,母版頁具有用於設計目的的自己的div和圖像。我想要一種方式,當我加載a1.aspx時,某些選定的圖像應該隱藏(可見= false)。我怎樣才能做到這一點? 如何在內容頁面更改母版頁中的div或圖像的可見性?在vb.net的內容頁面更改母版頁中的元素

回答

0

也許你想使用的FindControl和掌握,像這樣:

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

檢查this MSDN page更多的資料和樣品。

+0

請注意,這是C#語法。您將需要更改此以符合VB語法。還要注意,根據鏈接,這隻有在asp:Image不在ContentPlaceHolder內時纔會起作用。如果它在一個內部,你必須首先找到ContentPlaceHolder,然後使用FindControl來查找asp:Image。 – 2010-04-13 20:10:55

+0

-1:IMO - 讓頁面知道控制的「名稱」或層次結構,如Master頁面中所表達的那樣,不是很好的編程習慣。對控件名稱和/或其位置的任何更改都會影響所有代碼。所以我不喜歡MSDN示例:) – Sunny 2010-06-13 04:25:23

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

+0

注意:這是C#語法,但是對於VB.net,這個概念保持不變 – Sunny 2010-06-13 04:23:41

0

創建母版頁

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; 
相關問題