缩短真正长客户ID

时间:2010-12-20 20:31:30

标签: c# .net asp.net client

我得到了很长的客户ID,下面是一个这样的例子。其中一些长约100个字符,这很荒谬。 我可以使用任何可以缩短页面ID的工具吗?

ID = “ctl00_ctl00_MainContent_MemberMain_Abc_asdsad ...._ DlSAdasdasdasd_ctl00_PnsadasdasdnsHF”

编辑: 我正在筑巢,这是造成问题的原因。 我正在使用.net 3.5。并且碰撞不正常,因为javascript函数正在使用某些ID

6 个答案:

答案 0 :(得分:2)

如果使用ASP .NET 4,则可以将ClientIDMode设置为Static。然后你必须确保自己层次结构中的控件ID是唯一的。 See this

答案 1 :(得分:2)

我也遇到过这个问题,但我的解决方案是在jQuery方面。我只是改变了“选择器”。通常,您要查找的ID是ASP.Net给定ID的最后一部分。默认情况下,使用此选择器生成ID的调用:#theid所以我将其更改为[id $ = theid],这是一个CSS3选择器,用于查找id以“theid”结尾的元素。例如:

自:

if (jQuery("#txtEmailFinish").val() != "") 

更改为:

if (jQuery("[id$=txtEmailFinish]").val() != "")

如果您已经使用了javascripts并使用简单的查找和替换,则可以提供帮助,将调用更改为ID。

注意:我必须这样做的原因是因为我需要将在ASP.Net 4.0中开发的应用程序制作回ASP.Net

答案 2 :(得分:1)

也许。如果您使用的是.NET 4.0。如果没有,我认为没有办法缩短名称。在ASP.net< = 3.5中,每个ContentPlaceHolder或UserControl都会将其名称添加到“如果您尝试使用javascript访问这些名称”,则可以使用几种不同的方法。

仅适用于.NET 4.0:在您的MasterPage或UserControl声明中放置ClientIDMode =“Predictable”或ClientIDMode =“Static”(也许是您的页面声明)。
如果您使用的是.NET 3.5或更低版本,则无法缩短,但可以使用以下方法之一:

  1. JQuery有一个功能,允许您通过结束文本找到:
    var ElemIWant=$("[id$=PnsadasdasdnsHF]");

  2. 使用内联ASP通话:
    var ElemIWant=document.getElementById('<% =TextBox1.ClientID %>);

  3. 您还可以查看另一篇文章: Need workaround for .Net Master Page Name Mangling

答案 3 :(得分:1)

如果您打算压缩页面的输出量,请考虑使用HTML压缩器,例如HTMLCompressor:

http://www.textfixer.com/html/compress-html-compression.php

我发现通过从ASP.NET标记中删除所有空格,我在AJAX带宽上节省了45%。使用Fiddler(http://www.fiddler2.com/fiddler2/)查看差异。

答案 4 :(得分:0)

您使用的是什么版本的VS.NET/.NET? ASP.NET 4中的新ClientIDMode允许您控制客户端ID的生成方式:

http://www.dotnetcurry.com/ShowArticle.aspx?ID=492

答案 5 :(得分:0)

INamingContainer界面可能正是您所寻找的。在周围的控件上实现它。