.Net更改元素ID

时间:2009-03-31 01:14:07

标签: asp.net

.Net正在通过向他们添加ct100_来改变我页面上的元素ID。尽管我很欣赏微软试图帮助我避免在我的网站上复制ID,但我想我可以自己管理它。谁能告诉我如何防止这种情况? 提前谢谢。

5 个答案:

答案 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://nunogomes.net/post/2008/06/02/ASPNET-Controls-Improving-automatic-ID-generation-Architectural-Changes-(-Part-3).aspx


http://weblogs.asp.net/nunogomes/archive/2008/06/04/asp-net-controls-improving-automatic-id-generation-architectural-changes-part-3.aspx


http://forums.asp.net/t/1394822.aspx


相关问题