在ASP.Net </div>中消失<div>标签

时间:2013-02-25 15:17:52

标签: asp.net html rendering

我有一个ASP.Net页面,我在页面上的几个元素中封装了主页面上的标签,以便我可以将样式应用于div中的所有内容作为一个单元。这在几个地方工作正常,但有时div不会在客户端HTML中呈现,所以我的样式永远不会出现。

由于公司政策,我无法包含实际的源代码。但是,代码看起来像这样:

<div id="SideBarArea" class="SideBarStyle" runat="server">
  <div id="Top">
    <asp:ContentPlaceHolder="TopPlaceHolder" runat="server"/>
  </div>
  <div id="Bottom">
    <asp:ContentPlaceHolder="BottomPlaceHolder" runat="server"/>
  </div>
</div>

Top和Bottom div出现在呈现的HTML中,但SideBarArea不出现 - 或者至少不会出现。

实际上,我在应用程序的生命周期内创建了几个类似的母版页。页面类似,都有顶部和底部div,但它们的名称不同。这些div位于屏幕的左侧,逻辑上是一个侧栏区域;然而,从历史上看,它们并没有被捆绑在一起,除了它们在屏幕上的位置。

我有一个新的要求,根据应用程序逻辑启用或禁用侧栏区域。为了实现这一点,已进入主页面并将Top和Bottom div包装在一个名为SideBarArea的新div中,目的是启用或禁用包装器div。对于大多数母版页,这种方法运行良好,但在其中一种方法中,SideBarArea div不会在最终标记中呈现,相应的HtmlGenericControl在后面的代码中为空。

正如我写的那样,我的合作伙伴为div添加了一个显示样式,如下所示:

<div id="SideBarArea" class="SideBarStyle" runat="server" style="display:block">
  <div id="Top">
    <asp:ContentPlaceHolder="TopPlaceHolder" runat="server"/>
  </div>
  <div id="Bottom">
    <asp:ContentPlaceHolder="BottomPlaceHolder" runat="server"/>
  </div>
</div>

这迫使div在HTML中呈现并且为非null,所以此时的问题没有实际意义;但是,我仍然想了解为什么这种变化有效,以及它是否是解决问题的“正确”方法。

1 个答案:

答案 0 :(得分:0)

缺少字符会破坏HTML,因此runat="server显然会变得非常糟糕。

确保正确撰写标记,并注意IDE为您提供的任何错误或警告。将您的代码视为一种编译语言,一种根本无法编译的语言,更不用说可执行,直到所有语法都合理。事实上,如果您正在使用Visual Studio,那么您可以对其进行配置 - 我将在任何机会下提出建议 - 将警告视为错误,从而导致在这些情况下构建失败,迫使您查看错误

在此期间,请填写报价:

runat="server"

id="Top"

id="Bottom"