如何使用生成的ClientID将UserControl包装在DIV中

时间:2012-04-17 01:55:30

标签: c# asp.net webusercontrol

如果我有UserControl这样的话:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Foo.ascx.cs" Inherits="Foo" %>
<asp:TextBox runat="server" ID="TxtFoo" />

我将其包含在我的页面中,如下所示:

...
<uc:Foo runat="server" ID="UcFoo" />
...

我希望我的UserControlDIV包含在ClientID内,如下所示:

<div id="ctl00$ContentPH$UcFoo">
  <input type="text" name="ctl00$ContentPH$UcFoo$TxtFoo" id="ctl00$ContentPH$UcFoo$TxtFoo" />
</div>

但实际上,我在没有DIV标记的情况下获取内容。所以这里的问题是:如何告诉ASP.NET使用自动生成的ClientID在DIV中呈现我的控件?

2 个答案:

答案 0 :(得分:4)

将UserControl的内容包含在<div>id属性:

<div id="<%= this.ClientID %>">
    <asp:TextBox runat="server" ID="TxtFoo" />
</div>

请注意,ClientID将包含下划线,而不是美元符号(如示例所示)。

答案 1 :(得分:1)

选项1:

<asp:Panel runat="server">
  <asp:TextBox runat="Server" Id="txtFoo" />
</asp:Panel>

选项2:

编写自定义控件,覆盖Render方法&amp;写出你自己的字符串......

HTH。