有没有办法阻止contentplaceholder的ID影响ASP.NET中的子ID?

时间:2015-03-11 13:26:48

标签: asp.net contentplaceholder sitefinity-4

如果我有一个如下所示的占位符:

<asp:contentplaceholder ID="Body" runat="server"></asp:contentplaceholder>

在其中有几个具有ID属性的runat="server"元素,然后我得到这样的结果:

<span id="Body_T966DB943018">
  <div id="Body_T966DB943007_ctl00_ctl00_main"></div>
</span>

有没有办法设置我的contentplaceholder,使输出显示如下:

<span id="T966DB943018">
  <div id="T966DB943007_ctl00_ctl00_main"></div>
</span>

(注意所有生成的ID中缺少“Body_”)


如果你想知道我为什么要问......

我正在使用Sitefinity。默认情况下,您可以在后端GUI中设置模板。这就是该网站最初的构建方式。

后一种HTML结构是CMS在页面上生成模板的方式。 CSS和JS的初始构造使用了这些生成的ID。现在我们添加了一个主模板文件,我们需要为Sitefinity的内容添加一个默认的contentplaceholder

我需要找到一种方法来使用此默认占位符(如上所示ID="Body"不会影响其子ID的ID。

2 个答案:

答案 0 :(得分:1)

最好重做你的CSS并且更合适,因为你可以看到维护那些ID非常困难

答案 1 :(得分:0)

如果您想更改整个网站的行为,可以通过设置ClientIDModeweb.config中执行此操作。

<configuration>
  <system.web>
    <pages clientIDMode="Static" />
  </system.web>
<configuration>

或在页面级别。

<%@ Page ClientIDMode="Static" %>

或在个人控制级别。

<asp:Label runat="server" ClientIDMode="Static" />

请注意,您需要确保您的客户ID是唯一的,以避免冲突。