.Net正在通过向他们添加ct100_来改变我页面上的元素ID。尽管我很欣赏微软试图帮助我避免在我的网站上复制ID,但我想我可以自己管理它。谁能告诉我如何防止这种情况? 提前谢谢。
答案 0 :(得分:4)
这就是aspnet的工作方式。由于这个原因,控件提供了在后面的代码中使用的clientid方法。
如果要从js引用对象,可以注入clientid或使用类或其他属性。
编辑:请注意,这仅适用于ASP.NET控件。如果使用HTML控件,则会保留给定的ID。您也可以通过向其添加runat=server
属性来在您的代码中访问它们。显然,这些控件会使用viewstate等来破坏webforms模型,但它们确实为您提供了所需的功能。
当然,我担心它已经有一段时间了,所以我可能错了......(请评论或编辑,如果我是!)。
答案 1 :(得分:2)
您无法在当前版本的ASP.NET中阻止此操作 - the next version will allow you to do this。也许ASP.NET MVC对你来说是个不错的选择?
答案 2 :(得分:2)
任何具有INamingContainer接口的控件都会在其上附加控件层次结构,以允许多个控件在页面上而不会发生冲突。如果您想知道元素的id将在客户端上,您应该使用控件的ClientID属性。
答案 3 :(得分:1)
不要在服务器端使用任何东西。
这是ASP.NET系统的一个固有方面,没有办法使用.NET Server控件,也没有附加前缀。
要访问客户端名称,可以使用myControl.ClientID属性。
答案 4 :(得分:1)
您需要:
覆盖常规控件的行为以将Control.UniqueID属性与Control.ID属性分离
覆盖命名容器控件,以允许我们控制ID生成的方式以及如何查找控件
http://forums.asp.net/t/1394822.aspx