2015-06-01 137 views
3

訪問主頁的我有一個無法從內容頁面

<input type="button" id="Button1">
在我 Master1.master母版。 (位於 <div>)。

我也有一個內容頁面Main.aspx。 我想在我從另一個頁面訪問內容頁面Main.aspx時將按鈕的可見性設置爲true。 (我有一個Login.aspx頁面,並且在插入用戶/ psw並按下按鈕後,我將ged重定向到Main.aspx)。

我已經加入該指令<%@ MasterType virtualpath="~/Master1.master" %> ,我使用下面的代碼

Button home = new Button(); 
home = (Button)Master.FindControl("Button1"); 
home.Visible = false; 

但是我得到一個NullReferenceException當我嘗試運行此。 所以基本上我看不到「Button1」。 我試圖將值更改爲headContentHolder1,並且這些值完美運行。

任何人都可以幫我嗎?

回答

2

您需要添加runat屬性:

<input type="button" id="Button1" runat="server"> 
3

您不能訪問輸入這不是一個服務器端控件:

youll需要:

<input type="button" id="Button1" runat="server"> 
1

擁有母版頁公開一個你可以用來引用Button的屬性。在渲染事件期間控件的ID將被改變;這就是爲什麼你找不到它。通過使用母版頁上的屬性,您可以通過訪問Page.Master變量來訪問控件。您需要將其轉換爲主頁面類,以便您可以使用IntelliSense訪問公共和朋友方法/屬性。這裏有一些代碼...對不起,它在VB中。

這是主頁面的HTML。

<%@ Master Language="VB" CodeFile="MasterPage.master.vb" Inherits="MasterPage" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <asp:ContentPlaceHolder id="head" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <input type="button" id="button1" runat="server" /> 
     <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server"> 

     </asp:ContentPlaceHolder> 
    </div> 
    </form> 
</body> 
</html> 

這裏是主頁面的代碼隱藏。

Partial Class MasterPage 
    Inherits System.Web.UI.MasterPage 
    Public ReadOnly Property Button As Control 
     Get 
      Return button1 
     End Get 
    End Property 
End Class 

這裏是內容頁面。

Partial Class Default2 
    Inherits System.Web.UI.Page 

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
     CType(Page.Master, MasterPage).Button.Text = "My Text" 
    End Sub 
End Class 

注意下面呈現的控件名稱;他們不是你所期望的。您可以從UniqueID屬性中獲取真實的渲染名稱。