创建用户控件是.Net,没有可预测的ClientID模式

时间:2015-01-18 21:57:36

标签: c# asp.net vb.net user-controls naming-conventions

我正在创建一个fieldset用户控件,这样可以更轻松地在我的Web应用程序中使用。

但是,由于它是用户控件,因此需要一个唯一的ID来创建控件及其内部的子控件

我有一个ASP占位符控件,允许用户控件接受子控件,但是创建一个更长更长的ClientID,这是非常必要的,因为这是标准的.NET编程。

有没有办法在我的用户控件中关闭这个自动引用,并仍然保留在fieldset所在的父对象中的引用? (顺便说一下,它在主页中......)

我要问的是---有没有办法创建一个usercontrol而没有usercontrol的子元素,其ID基于父usercontrol ...我注意到ASP UpdatePanel具有这种能力并希望复制相同的功能。

非常感谢您的反馈。

1 个答案:

答案 0 :(得分:0)

有几种方法可以解决这个问题,4guysfromrolla

有一个很好的资源

但总结一下,你的一些选择是: -

  • 首先,您可以将所有客户端ID模式设为静态 - 查看ClientIDMode in web.config

  • 不要制作可预测的客户端ID模式,而是在代码中使用它们的ID,例如

    var txt = document.getElementById('<%=TextBoxID.ClientID%>');

    因此,您可以使用ASP.NET直接将客户端ID注入HTML。

  • 将客户端ID覆盖为每个属性的静态 - 这是您可以在.NET中指定您希望客户端ID为您正在使用的foreac控件的位置。 <asp:TextBox ID="txtName" runat="server" ClientIDMode="Static" />

希望这有帮助!