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