服务器端 show/hide of HTML 不产生额外的标记
Server-side show/hide of HTML without producing additional markup
使用类似的东西来 show/hide 某些标记:
<asp:Panel runat="server" ID="MyPanel">
<li>...</li>
<li>...</li>
...
</asp:Panel>
它被渲染成这样:
<div>
<li>...</li>
<li>...</li>
...
</div>
现在我想要 show/hide 服务器端 MyPanel
但不想渲染周围的 div
。
我可以做类似的事情:
<% if (MyCondition) { %>
<li>...</li>
<li>...</li>
...
<% } %>
但这对我来说看起来相当混乱。
或者我可以做类似的事情:
<li runat="server" ID="C1">...</li>
<li runat="server" ID="C2">...</li>
...
但这需要所有 "root" 控件都具有 runat=server
属性,该属性会产生大量代码并且在我看来也很混乱。
我的问题:
有没有办法告诉 Panel
控件自己不生成任何标记?或者是否有其他控件可用于我的目的?
如果您不希望针对 Panel 生成 div,那么您可以使 ul runat 服务器并为该控件分配一些 id,并在后面的代码中使用 visible 属性显示隐藏它。
<li id="myUl" runat="server">
</li>
面板允许有滚动条,实际上是通过div实现的,直接使用ul不会有。
我最终使用了 Literal
control。
有了这个控件,我可以这样写:
<ul>
<li>1</li>
<li>2</li>
<asp:Literal runat="server" Visible="false">
<li>3</li>
<li>4</li>
</asp:Literal>
<li>5</li>
</ul>
结果是:
<ul>
<li>1</li>
<li>2</li>
<li>5</li>
</ul>
我也可以这样写:
<ul>
<li>1</li>
<li>2</li>
<asp:Literal runat="server" Visible="true">
<li>3</li>
<li>4</li>
</asp:Literal>
<li>5</li>
</ul>
结果如下:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
所以这正是我想要的:一个服务器控件,允许我 show/hide 多个 HTML 标记标签而不呈现任何额外的标记。
使用类似的东西来 show/hide 某些标记:
<asp:Panel runat="server" ID="MyPanel">
<li>...</li>
<li>...</li>
...
</asp:Panel>
它被渲染成这样:
<div>
<li>...</li>
<li>...</li>
...
</div>
现在我想要 show/hide 服务器端 MyPanel
但不想渲染周围的 div
。
我可以做类似的事情:
<% if (MyCondition) { %>
<li>...</li>
<li>...</li>
...
<% } %>
但这对我来说看起来相当混乱。
或者我可以做类似的事情:
<li runat="server" ID="C1">...</li>
<li runat="server" ID="C2">...</li>
...
但这需要所有 "root" 控件都具有 runat=server
属性,该属性会产生大量代码并且在我看来也很混乱。
我的问题:
有没有办法告诉 Panel
控件自己不生成任何标记?或者是否有其他控件可用于我的目的?
如果您不希望针对 Panel 生成 div,那么您可以使 ul runat 服务器并为该控件分配一些 id,并在后面的代码中使用 visible 属性显示隐藏它。
<li id="myUl" runat="server">
</li>
面板允许有滚动条,实际上是通过div实现的,直接使用ul不会有。
我最终使用了 Literal
control。
有了这个控件,我可以这样写:
<ul>
<li>1</li>
<li>2</li>
<asp:Literal runat="server" Visible="false">
<li>3</li>
<li>4</li>
</asp:Literal>
<li>5</li>
</ul>
结果是:
<ul>
<li>1</li>
<li>2</li>
<li>5</li>
</ul>
我也可以这样写:
<ul>
<li>1</li>
<li>2</li>
<asp:Literal runat="server" Visible="true">
<li>3</li>
<li>4</li>
</asp:Literal>
<li>5</li>
</ul>
结果如下:
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
所以这正是我想要的:一个服务器控件,允许我 show/hide 多个 HTML 标记标签而不呈现任何额外的标记。