ASP.NET名称修改是否一致?

时间:2010-08-04 21:15:38

标签: asp.net name-mangling

当您拥有这样的ASP控件时:

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

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

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

4 个答案:

答案 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']")

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

答案 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。

相关问题