如何在使用 MasterPage 的 ASP.NET Web 窗体中为服务器控件设置特定 ID?
是否可以在 ASP.NET 服务器控件上设置特定 ID?每次我分配一个 ID 并运行 Web 表单时,ID 都会发生变化。
例如:
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
翻译成这样:
<input id="ct100_ContentPlaceHolder1_txtName" type="text" />
我认为这是对我使用母版页所做的,但如果是这样,我如何确定控件将具有特定的 ID(用于 JavaScript 目的)。我将自动生成的 id 放入我的 javascript 中并且它正在工作,但我更愿意使用我最初分配给它们的 id。这可能吗?
(适用于版本:ASP.NET 3.5)
Is it possible to set a specific ID on an ASP.NET server control? Everytime I assign an ID and run the web form the ID changes.
For Example:
<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
Gets translated into this:
<input id="ct100_ContentPlaceHolder1_txtName" type="text" />
I think this is do to me using master pages, but if so how can I be sure a control will have a certain ID(for javascript purposes). I placed the auto-generated id in my javascript and it is working, but I would prefer to have used the id's that I originally assigned them. Is this possible?
(This is for version:ASP.NET 3.5)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
从 .NET 4 开始,您可以更好地控制客户端 ID 的外观 (请参阅这篇文章了解详细信息)。
要强制使用特定的客户端 ID,您必须将 ClientIDMode 设置为静态。以下代码将呈现一个带有
id="txtName"
的元素:
尽管如果这样做,您必须确保没有两个控件相同的客户端 ID。检查上面链接的文章以了解其他选项。
Starting with .NET 4 you have greater control about how the client-side IDs look like (see this post for details).
To force a specific client-side ID, you have to set the ClientIDMode to static. The following will render an
<input>
element withid="txtName"
:Although if you do this, you have to ensure that you don't have two controls with identical client-side IDs. Check the article linked above for other options.
这是 4.0 版本之前的 .NET 中 Web 控件 ID 的方式。版本 4.0 引入了客户端 ID,您可以阅读有关 此处。
你可以在 JS 中使用这样的东西:
This is the way web controls ID's are in .NET prior to version 4.0. Version 4.0 introduces client IDs, which you can read about here.
You can use somthing like this in your JS:
您可以使用 Control.ClientID 代码隐藏中的属性,以在将其添加到控件树后获取实际的 id。
ASP.NET WebForms 人员做出的超级烦人的选择。
You can use the Control.ClientID property in your codebehind to get the actual id after it's been added to the control tree.
Super annoying choice made by the asp.net webforms people.