【发布时间】:2013-10-07 12:41:34
【问题描述】:
我有一个用户控件,其中有一个标签。
<asp:Label ID="lblProductionName"
runat="server"
Text="Production Name will come here">
</asp:Label>
我使用这个函数从后面的代码中渲染给定的 UC:
private string RenderControl(Control control)
{
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter writer = new HtmlTextWriter(sw);
control.RenderControl(writer);
return sb.ToString();
}
渲染后,我得到这个作为输出字符串:
<span id="lblProductionName">Production Name will come here</span>
现在,当我放置同一个用户控件的两个实例时,我在输出字符串中得到了相同的跨度 ID。
我想为两个用户控件实例生成两个不同的 ID。如何生成它?
【问题讨论】:
-
为什么要手动渲染 html 而不是以编程方式加载
UserControl并将其添加到页面中(或者甚至简单地在 aspx 上以声明方式添加它们)? -
我得和@TimSchmelter 一起去。如果您只是通过
Controls.Add方法向它添加控件,并摆脱RenderControl方法并设置适当的属性或在必要时利用Attributes.Add- 您将摆脱id的问题因为它将利用命名容器。 -
@TimSchmelter:我正在开发一个 Web 表单生成器应用程序,用户可以在其中设计自己的 Web 表单,在这个应用程序中,用户正在动态添加组件(一个组件可能不止一次出现)到编辑器,从那个编辑器我得到一个 HTML。现在,我阅读了所有 HTML,并根据该 HTML 中的组件,渲染了相应的用户控件,在渲染之后,我终于得到了一个 HTML(字符串格式),我最终从后面的代码中提供给一个 div。
标签: c# asp.net c#-4.0 user-controls