构建自定义控件时,如何访问开始和结束控件标记之间的内容?
<my:tag runat="server">
<p>...markup</p>...
</my:tag>
我目前成功使用Render方法输出任意市场营销,但似乎无法找到如何访问包含的标记。
答案 0 :(得分:2)
看看this.Controls
。本文 :
http://msdn.microsoft.com/en-us/library/system.web.ui.control.controls(VS.71).aspx声明“在ASP.NET页面上,当在服务器控件的开始和结束标记之间以声明方式添加控件时,ASP.NET会自动将控件添加到包含服务器控件的ControlCollection中。”
据我了解,如果你有
<yourcode:yourcontrol id="asdf" runat="server">
<p id="innerP" runat="server">Text here</p>
</yourcode:yourcontrol>
然后可以调用this.FindControl("innerP").text="Other text here
,因为P标记是在服务器端生成的。
但是,如果您没有在P元素上设置runat="server"
:
<yourcode:yourcontrol id="asdf" runat="server">
<p id="innerP">Text here</p>
</yourcode:yourcontrol>
然后您只能通过this.controls[0]
找到它,因为所有内容都会呈现为一个Literal
控件。
答案 1 :(得分:0)
我想你想这样做:
<my:tag runtat="server">
<p><asp:Label id="markupLabel" runat="server"/></p>
</my:tag>
来自代码隐藏
markupLabel.text = "Foo";
答案 2 :(得分:0)
如果您向my:tag标记添加ID,则应该能够使用标记的.Controls集合访问其中的控件。