当您有这样的 ASP 控件时:
<asp:TreeView ID="TreeItems" runat="server"></asp:TreeView>
它生成的 html 会破坏名称。如果我想直接访问生成的项目的 ID,我可以尝试找出它破坏名称的原因并查找该 ID。
生成的项目名称是否保证按照 Microsoft 的任何标准以特定方式完成?如果他们发布以不同方式执行此操作的新版本 .NET,我只是担心会出现这种情况。有没有办法在代码中生成自己的名字?
当您有这样的 ASP 控件时:
<asp:TreeView ID="TreeItems" runat="server"></asp:TreeView>
它生成的 html 会破坏名称。如果我想直接访问生成的项目的 ID,我可以尝试找出它破坏名称的原因并查找该 ID。
生成的项目名称是否保证按照 Microsoft 的任何标准以特定方式完成?如果他们发布以不同方式执行此操作的新版本 .NET,我只是担心会出现这种情况。有没有办法在代码中生成自己的名字?
不能保证一致(这是一个实现细节)
请改用 ClientID(它会为您提供生成的 id)。
我相信使用 .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']")
如果要在客户端脚本中使用它,可以执行以下操作:
<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>
不,不能保证是一致的。
只要使用相同版本的框架,它就应该是一致的,但是对服务器的更新可能会改变这一点,因此您不应该依赖于知道生成的名称。
使用该ClientID
属性找出控件的生成 ID。