ASP.NET名称是否一致?
当您有这样一个ASP控件时:ASP.NET名称是否一致?,asp.net,name-mangling,Asp.net,Name Mangling,当您有这样一个ASP控件时: <asp:TreeView ID="TreeItems" runat="server"></asp:TreeView> <script type="text/javascript"> //initialize client names of server side controls. var TreeItemsId = "ctl00_TreeItems"; </script> 它生成的h
<asp:TreeView ID="TreeItems" runat="server"></asp:TreeView>
<script type="text/javascript">
//initialize client names of server side controls.
var TreeItemsId = "ctl00_TreeItems";
</script>
它生成的html会破坏名称。如果我想直接访问生成的项目的ID,我可以尝试找出它将名称更改为什么,然后查找该ID
生成的项目名称是否保证按照Microsoft的标准以特定方式完成?我只是担心,如果他们发布了一个新版本的.NET,并以不同的方式实现它,就会出现这种情况。有没有一种方法可以在代码中生成名称?它不能保证一致性(这是一个实现细节)
请改用ClientID(它将为您提供生成的id)。不,它不能保证一致性 只要使用相同版本的框架,它就应该是一致的,但是对服务器的更新可能会改变这一点,所以您不应该依赖于知道生成的名称
使用
ClientID
属性查找控件的生成id。如果要在客户端脚本中使用它,可以执行以下操作:
<script type="text/javascript">
//initialize client names of server side controls.
var TreeItemsId = "<%= TreeItems.ClientID %>";
</script>
//初始化服务器端控件的客户端名称。
var TreeItemsId=“”;
当它呈现给客户端时,它将如下所示:
<asp:TreeView ID="TreeItems" runat="server"></asp:TreeView>
<script type="text/javascript">
//initialize client names of server side controls.
var TreeItemsId = "ctl00_TreeItems";
</script>
//初始化服务器端控件的客户端名称。
var TreeItemsId=“ctl00\u TreeItems”;
我相信使用.NET 4上的ASP.NET,您可以指定以某种方式生成ID
见:
此外,如果您使用的是jQuery,则可以确保标称ID将位于客户机ID中,因此您可以使用以下内容选择它:
$("input[id*='TreeItems']")
请参阅:另外,只要您在同一命名容器中。您的选择器具有pro/con功能,可以在模板中找到使用相同ID创建的所有控件。