0

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

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

在其中还有其他几个runat="server"具有 ID 属性的元素,然后我得到如下内容:

<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。现在我们已经添加了一个主模板文件,我们需要contentplaceholder为 Sitefinity 的内容设置一个默认值。

我需要找到一种方法来拥有这个默认占位符(如上所示,ID="Body"不影响其孩子的 ID。

4

2 回答 2

1

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

于 2015-03-11T14:36:55.317 回答
0

如果要更改整个站点的行为,可以web.config通过设置ClientIDMode来实现。

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

或者在页面级别。

<%@ Page ClientIDMode="Static" %>

或者在个人控制层面。

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

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

于 2015-03-11T13:35:55.830 回答