我有一个页面: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'的实际类型。然后你可以访问这个自定义属性。 –
好的,谢谢你,先生。我已经发布了答案。请你回顾一下,让我知道如果我做对或错? –