文本框或任何控件ID不断变化,为什么?

时间:2011-07-22 08:36:12

标签: c# javascript asp.net

对于我的文本框,在我的本地生成了以下ID。

ctl00_ContentPlaceHolder1_ucLogin1_txtUserName

当我在IIS上托管时,会生成以下ID。

ContentPlaceHolder1_ucLogin1_txtUserName

如何获取文本框ID?不要将答案回复为使用ClientID,现在我正在使用外部javascript文件。它不支持ClientID

6 个答案:

答案 0 :(得分:7)

如果您使用的是ASP.NET 4.0,则可以将文本框的ClientIDMode设置为Static,其ID始终相同。

示例:

<asp:TextBox ID="txtUserName" runat="server" ClientIDMode="Static" />

答案 1 :(得分:2)

你可以使用那个jquery

var clientId =$('input[id*="txtUserName"]').attr("id");

记住; 'input [id * =“txtUserName”]'选择id为id的所有输入元素都有“txtUserName”。

答案 2 :(得分:1)

您必须使用ClientID,但您可以做的是在页面上使用一小部分javascript将变量设置为传递的ClientID,以便与外部脚本一起使用。

如果您使用.Net Framework的第4版,则可以将ClientIDMode设置为Static,这样您就无法控制ID生成。见http://weblogs.asp.net/scottgu/archive/2010/03/30/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net-4-0-series.aspx

答案 3 :(得分:1)

有很多方法可以解决这个问题,但是可以快速实现的方法是只需在此TextBox中添加一个独特的CSS类

这允许您通过使用一些JavaScript客户端框架(如jQuery)在其客户端检索此TextBox:

$("input.MyTextBoxCssClass")

另一种方法,如果你在ASP.NET 4.0中是 bniwredyc 在他的回答中提出的方法。

答案 4 :(得分:1)

您有两种选择:

如果您的目标是ASP.NET 4.0,则可以显式使用set ID。 Here是如何完成的示例。

另一种选择是将TextBox ID作为参数传递给javascript函数,并在调用javascript函数时使用“ClientID”方法。 Here是一个类似的问题。

答案 5 :(得分:1)

您应该选择文本框而不使用其ID。尝试在文本框中添加一个类并选择:

<asp:TextBox ID="txtUserName" runat="server" CssClass="txtUserNameClass"/>