换句话说,为什么我不能这样做:
<a id="projectsButton"
visible=<%= someFunctionWhichEvalsToFalse() ? false : true %>>
</a>
似乎什么都不做。我通过切换false和true来检查这个。
我该怎么办?
答案 0 :(得分:8)
您可以这样做,但它不会执行任何操作,因为HTML没有visible
属性。
相反,您可以设置display
CSS属性,如下所示:
<a id="projectsButton"
style="display: <%= someFunctionWhichEvalsToFalse() ? "none" : "inline" %>">
或者,您可以将整个标记放入if
块,如下所示:
<% if (!someFunctionWhichEvalsToFalse()) { %>
<a id="projectsButton"></a>
<% } %>
答案 1 :(得分:3)
Visible仅适用于服务器控件,因此您需要runat =“server”
如果你想在没有服务器控件的情况下这样做,你可以试试类似的东西:
<a id="projectsButton" style='display:<%= someFunctionWhichEvalsToFalse() ? "none" : "inline" %>'></a>
答案 2 :(得分:2)
换句话说,你的问题是为什么你不能在HTML元素上使用服务器控件属性而不是服务器控件。答案是因为它不是服务器控件,而服务器控件属性仅适用于服务器控件。 HTML标记被视为纯文本。
答案 3 :(得分:1)
您可以在CSS中执行display:none
来隐藏元素,尽管该元素将被发送到客户端。要真正隐藏它,您可以将其包装在<asp:PlaceHolder>
控件中并绑定PlaceHolder上的Visible
属性。
<asp:PlaceHolder ID="placeholder" runat="server" Visible="<%# someFunctionWhichEvalsToFalse() %>">
<a id="projectsButton" href="#">link</a>
</asp:PlaceHolder>
这将阻止链接html被发送到客户端。
答案 4 :(得分:0)
这将使用a
属性向屏幕呈现visible
元素,根据W3C,该属性不是a
元素的有效属性。您可能希望设置将在设计器文件中创建的Visible
的大写HtmlGenericControl
属性,因为将runat="server"
添加到元素的声明中。