我们正在尝试将我们的网站从框架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并在整个网站上实现它。
你们的任何想法都会非常感激。
答案 0 :(得分:1)
试试这个
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
答案 1 :(得分:1)
在第二个示例中,您使用了母版页,这解释了ClientID
不同的原因。如果您通过ClientID
引用控件,则不应该有所作为:
var ctrl = $("#<%=gglSelectedItemsImage.ClientID%>");
答案 2 :(得分:0)
您应该在.ASPX文件中访问此类客户端ID:
<%=gglSelectedItemsImage.ClientID%>