我有一個頁面:Abc.aspx如何從用戶控件的母版頁內的內容頁找到標籤控件?
在我用一個母版頁是Master1.Master這Abc.aspx頁。
現在,在這個母版頁上,我提交了1個用戶控件名稱Usercontrol1.ascx。
在此用戶控件上,我把1個標籤命名爲lbl1。
<asp:Label runat="server" ID="lbl1"></asp:Label>
所以現在Abc.aspx頁的頁面加載事件,我想找到這個控制和我都試過,但得到空:
protected void Page_Load(object sender, EventArgs e)
{
var lbl = ((Label)this.Master.FindControl("lbl1")); // null here
((Label)this.Page.Master.FindControl("lbl1")).Text = "Hello"; //error here:object reference not set to instance of object
}
這是我的母版頁:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Master1.Master.cs" Inherits="" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<asp:ContentPlaceHolder ID="head" runat="server"></asp:ContentPlaceHolder>
</head>
<body>
<form runat="server">
<div id="Load">
<uc2:UserControl1 ID="UserControl1 " runat="server" />
<asp:ContentPlaceHolder ID="cphMain" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
最好的辦法是在提供一個屬性的帶有有意義名稱的'MasterPage'和'string'類型。該屬性獲取/設置'UserControl'中的標籤文本。爲了達到這個目的,還要在'UserControl'中提供一個具有相同有意義名稱和類型'string'的屬性。該屬性獲取/設置標籤的文本。您必須將'this.Master'強制轉換爲'Master1'的'MasterPage'的實際類型。然後你可以訪問這個自定義屬性。 –
好的,謝謝你,先生。我已經發布了答案。請你回顧一下,讓我知道如果我做對或錯? –