我需要访问母版页上的多个文本框。文本框在单独的Web控件中声明,它不会让我调用文本框的名称,因此我可以使用数据填充它们。我有多个文本框,就像我说的那样,但是例如,当我尝试写入txtName
时,即使我点击“设计视图”它说它存在,它也不会让我。
有人可以帮帮我吗?
答案 0 :(得分:2)
将Web控件中的文本框公开为属性。
在webcontrol.ascx
中<asp:TextBox runat="server" id="txtName" />
在webcontrol.ascx.cs
中public virtual TextBox TxtName { get {return txtName;} //note capitalization
然后在母版页中执行相同的操作以显示Web控件。
在masterpage.master
中<uc1:MyWebControl runat="server" id="MyWebControl1" />
在mastermage.master.cs
中public virtual MyWebControl myWebControl{get {return myWebControl1;}}
然后通过添加MasterType指令,从内容页面强烈输入您的母版页。
在default.aspx
中<%@ MasterType TypeName="MyMasterPageClass" />
然后,您可以从后面的内容页面代码访问它。在default.aspx.cs
中Master.myWebControl.TxtName.Text="Hello, world!";
执行此操作所必需的原因是.aspx,.ascx和.master页面上声明的控件是protected
而不是public
,并且没有办法(截至目前)改变我所知道的那些。因此,我们可以使用属性将这些控件公开为公开。