我有一个需要访问 TextBox 的脚本,但是 ASP.NET 生成了一些疯狂的名称:ctl00$ContentPlaceHolder1$txtEmpFirstName
...客户端脚本无法知道如何访问该控件。
我们如何解决这个问题?我还需要能够在按下按钮时从服务器端代码访问文本,如果这有影响吗?
我有一个需要访问 TextBox 的脚本,但是 ASP.NET 生成了一些疯狂的名称:ctl00$ContentPlaceHolder1$txtEmpFirstName
...客户端脚本无法知道如何访问该控件。
我们如何解决这个问题?我还需要能够在按下按钮时从服务器端代码访问文本,如果这有影响吗?
ClientID
您可以在客户端代码中访问 TextBox 的属性。
<%= TextBox.ClientID %>
我们处理这种情况的方法是在服务器端为需要在客户端访问的每个控件编写一个 javascript 变量。
例如:
string sScript = "var m_stxtEmpFirstName = '" + txtEmpFirstName.ClientID + "'";
ScriptManager.RegisterStartupScript(this, this.GetType(), "MyScript", sScript, true);
这在以下几种情况下是必要的:
1) 如果您的 javascript 与您的代码页是分开的
2) 如果您正在处理需要稍微不同的方法来识别客户端控件的第三方控件(我们使用一些控件,其中 ClientID 中的下划线必须替换为 x 或完全删除)。是的,您可以在内联脚本中执行此操作,但您必须记住每次访问控件时都执行此操作。在服务器端执行此操作允许您创建通用的、特定于控件类型的方法,这些方法可以每次都为您正确生成适当的客户端 ID。
3) 如果您在页面中动态生成了在设计时可能不知道其 clientid 的控件。
这些只是我们遇到的需要将 id 作为代码隐藏中的 js 变量生成的场景。我知道还有很多。