1

我在 .net 框架 4 中有一个 asp.net C# Web 表单应用程序在我的页面中,当我查看 html 源代码时,它会将控件 ID 更改为ctl00_CPHPageContents_txtUserID实际上txtUserID

此应用程序首先出现在 Framework 3.5 中,并且生成的 ID 类似于CPHPageContents_txtUserID

所以,简而言之,在 Framework 3.5 中的 ID 是CPHPageContents_txtUserID,现在在 Framework 4 中,IDctl00_CPHPageContents_txtUserID是破坏我们的自动化测试的。我可以删除ctl00框架 4 添加的这个吗?

4

3 回答 3

2

检查页面的ClientIDMode;这是 .NET 4 中的一项新功能,可让您更好地控制 Web 表单生成的 ID。虽然如果它在前面添加一个 ctl100_ 意味着有一个新的服务器端控件包装了以前没有的 CPHPageContents。

于 2011-09-14T11:55:37.800 回答
2

在这里找到解决方案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

将 ClientIDMode 设置为 Predictable 会删除 ct100_ 前缀。

于 2011-09-15T13:54:09.847 回答
0

ClientIDMode 是最好的方法。如果您将其设置为“静态”,则页面中控件的 ID 将是您设置的 ID。但是,如果您正在维护一个旧项目并且出于某种原因必须坚持使用旧版本的框架,您可以将以下内容添加到您的页面中:

<asp:HiddenField runat="server" ID="aspPrefix" />
<div id="idPrefix" style="display:none" ><%= aspPrefix.ClientID %></div>

然后,从 javascript 中添加:

var hiddenFieldId = $('#idPrefix').text();
ver controlPrefix = hiddenFieldId.substr(0, hiddenFieldId.length - 9);  // 9 chars in 'aspPrefix'

使用前缀,您现在可以获取页面中其他控件的 id。

于 2012-11-14T16:57:44.380 回答