5

我用谷歌搜索了这个并没有找到我需要的东西。我发现的所有现有解决方案都将“可见性”设置为 false。这似乎对我不起作用,因为我的应用程序呈现 PDF,它只是“隐藏”了 DIV 并在它的位置留下了一个很大的空白。

相反,我不想渲染 HTML。例如,在 PHP 中,这可以像这样简单地完成:

<?php if ($showDiv == true) { ?>
<div>Lorem ipsum dolor sit amet</div>
<?php } ?>

在 ASP.NET MVC 中,我可以简单地传递一个 ViewBag 变量并做同样的事情。

ASP.NET (C#) 中的解决方案是什么?

4

6 回答 6

13
<% if ( showDiv ) { %>
<div></div>
<% } %>

其中 showDiv 将是您后面代码中的受保护属性。

于 2013-01-23T20:57:53.787 回答
9

在.aspx 文件中

<div runat="server" id="hideableDiv">Lorem ipsum dolor sit amet</div>

在后面的代码中

...
hideableDiv.Visible = false;
...
于 2013-01-23T20:53:51.677 回答
4

使用<asp:panel>呈现为 HTML 的控件<div>。然后,您可以切换可见性。如果visible设置为 false,asp.net 将不会呈现任何内容。

    <asp:Panel id="MyPanel" runat="server">
    ...
    </asp:Panel>

   MyPanel.Visible = false;
于 2013-01-23T20:58:25.057 回答
2

标记

<div runat="server" id="myPdfDiv">Lorem ipsum dolor sit amet</div>

代码隐藏

myPdfDiv.Visible = false;
myPdfDiv.InnerHTML = "";
于 2013-01-23T21:01:03.473 回答
2

是的,您可以将 div 放在 ASP PlaceHolder 控件中:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.placeholder(v=vs.71).aspx

<asp:PlaceHolder id="PlaceHolder1" runat="server">
<div></div>
</asp:PlaceHolder>

然后在代码隐藏中,您可以像这样设置它:

PlaceHolder1.Visible = true;
于 2013-01-23T21:02:31.863 回答
2

另一个不会产生任何 HTML 的解决方案:

HTML

<asp:Literal ID ="litDiv" runat="server">       
</asp:Literal>

代码背后:

bool showDiv = true;
if (showDiv)
    this.litDiv.Text = "<div>Lorem ipsum dolor sit amet</div>";
于 2013-01-23T21:24:10.453 回答