ASP.Net 3.5客户端ID与4.0不同

时间:2011-11-08 15:16:29

标签: c# jquery asp.net vb.net iis-7

我们正在尝试将我们的网站从框架3.5升级到4.0。一切看起来都很好服务器端 - 到目前为止我唯一的问题是少数自定义控件的ID。

控制减速看起来像:

    <div runat="server" id="gglSelectedItemsImage" class="gplSelectedItemsText">None selected</div>

在3.5中渲染时,控件如下所示:

<div id="gplCategories_gglSelectedItemsImage" class="gplSelectedItemsText">Some Content</div>

并且在4.0中赞:

<div id="ctl00_ctl00_ctl00_ContentPlaceHolder1_Content_gplCategories_gglSelectedItemsImage" class="gplSelectedItemsText">Some Content</div>

这导致我们的一些旧的JavaScript / JQuery失败。

我在web.config中设置了<pages clientIDMode="AutoID" controlRenderingCompatibilityVersion="3.5" />,因此99.9%的ID是正确的。最奇怪的是3.5控件看起来像使用clientIDMode="Predictable"而不是标准的3.5自动ID?

此外,如果我在4.0中访问控制clientID Server端,它看起来是正确的:

Me.gglSelectedItemsImage.ClientID = "gplCategories_gglSelectedItemsImage"

这是主要问题,插入JavaScript ect的任何值实际上都是错误的值。

遗憾的是,我们的网站很难解决这个错误,所以我需要弄清楚为什么控件以不同方式呈现其ID并在整个网站上实现它。

你们的任何想法都会非常感激。

3 个答案:

答案 0 :(得分:1)

试试这个

<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>

答案 1 :(得分:1)

在第二个示例中,您使用了母版页,这解释了ClientID不同的原因。如果您通过ClientID引用控件,则不应该有所作为:

var ctrl = $("#<%=gglSelectedItemsImage.ClientID%>");

答案 2 :(得分:0)

您应该在.ASPX文件中访问此类客户端ID:

<%=gglSelectedItemsImage.ClientID%>