12

是否可以在 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)

4

3 回答 3

27

从 .NET 4 开始,您可以更好地控制客户端 ID 的外观(有关详细信息,请参阅这篇文章)。

要强制使用特定的客户端 ID,您必须将 ClientIDMode 设置为静态。以下将呈现一个<input>元素id="txtName"

<asp:TextBox ID="txtName" ClientIDMode="static" runat="server"></asp:TextBox>

尽管如果您这样做,您必须确保您没有两个具有相同客户端 ID 的控件。检查上面链接的文章以获取其他选项。

于 2010-07-21T22:49:49.500 回答
4

这是 4.0 之前的 .NET 中 Web 控件 ID 的方式。4.0 版引入了客户端 ID,您可以在此处阅读。

你可以在你的 JS 中使用这样的东西:

var something = '<%= txtName.ClientID %>';
于 2010-07-21T22:50:47.833 回答
2

您可以在代码隐藏中使用Control.ClientID属性在将其添加到控件树后获取实际 id。

asp.net webforms 人做出的超级烦人的选择。

于 2010-07-21T22:50:17.307 回答