ASP.NET自定义非自动关闭控件

时间:2010-01-06 20:20:43

标签: c# asp.net custom-controls

构建自定义控件时,如何访问开始和结束控件标记之间的内容?

<my:tag runat="server">
 <p>...markup</p>...
</my:tag>

我目前成功使用Render方法输出任意市场营销,但似乎无法找到如何访问包含的标记。

3 个答案:

答案 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集合访问其中的控件。