3

当您有这样的 ASP 控件时:

<asp:TreeView ID="TreeItems" runat="server"></asp:TreeView>

它生成的 html 会破坏名称。如果我想直接访问生成的项目的 ID,我可以尝试找出它破坏名称的原因并查找该 ID。

生成的项目名称是否保证按照 Microsoft 的任何标准以特定方式完成?如果他们发布以不同方式执行此操作的新版本 .NET,我只是担心会出现这种情况。有没有办法在代码中生成自己的名字?

4

4 回答 4

5

不能保证一致(这是一个实现细节)

请改用 ClientID(它会为您提供生成的 id)。

于 2010-08-04T21:18:03.330 回答
4

我相信使用 .NET 4 上的 ASP.NET,您可以指定以某种方式生成 ID。

参见:http ://weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx

此外,如果您使用 jQuery,您可以确定名义 ID 将客户端 ID 中,因此您可以使用以下内容选择它:

$("input[id*='TreeItems']")

请参阅:http ://api.jquery.com/attribute-contains-selector/

于 2010-08-04T21:32:48.340 回答
2

如果要在客户端脚本中使用它,可以执行以下操作:

<script type="text/javascript">
    //initialize client names of server side controls.
    var TreeItemsId = "<%= TreeItems.ClientID  %>";    
</script>

当它呈现给客户端时,它看起来像这样:

<script type="text/javascript">
    //initialize client names of server side controls.
    var TreeItemsId = "ctl00_TreeItems";    
</script>
于 2010-08-04T21:27:18.350 回答
0

不,不能保证是一致的。

只要使用相同版本的框架,它就应该是一致的,但是对服务器的更新可能会改变这一点,因此您不应该依赖于知道生成的名称。

使用该ClientID属性找出控件的生成 ID。

于 2010-08-04T21:24:44.383 回答