代码之家  ›  专栏  ›  技术社区  ›  Matthew Jones

为什么我不能在没有runat=server的情况下绑定控件的可见部分?

  •  1
  • Matthew Jones  · 技术社区  · 14 年前

    换句话说,为什么我不能这样做:

    <a id="projectsButton" 
    visible=<%= someFunctionWhichEvalsToFalse() ? false : true %>>
    </a>
    

    它似乎什么也没做。我通过切换假和真来检查这一点。

    我能怎么办?

    5 回复  |  直到 14 年前
        1
  •  8
  •   SLaks    14 年前

    你可以这样做,但它不会做任何事情,因为HTML没有 visible 属性。

    相反,您可以设置 display CSS属性,如下所示:

    <a id="projectsButton" 
       style="display: <%= someFunctionWhichEvalsToFalse() ? "none" : "inline" %>">
    

    if 块,像这样:

    <% if (!someFunctionWhichEvalsToFalse()) { %>
        <a id="projectsButton"></a>
    <% } %>
    
        2
  •  3
  •   CubanX    14 年前

    Visible仅对服务器控件可用,因此需要runat=“server”

    <a id="projectsButton" style='display:<%= someFunctionWhichEvalsToFalse() ? "none" : "inline" %>'></a>
    
        3
  •  2
  •   Jace Rhea    14 年前

        4
  •  1
  •   Ben Farmer    14 年前

    你可以做一个 display:none 在CSS中隐藏元素,尽管元素将被发送到客户端。要想真正隐藏它,你可以把它包起来 <asp:PlaceHolder> 控制并绑定 Visible 占位符上的属性。

    <asp:PlaceHolder ID="placeholder" runat="server" Visible="<%# someFunctionWhichEvalsToFalse() %>">
        <a id="projectsButton" href="#">link</a>
    </asp:PlaceHolder>
    

    这将阻止链接html被发送到客户端。

        5
  •  0
  •   Chris Shouts    14 年前

    这将导致 a visible 属性,它不是 元素依据 W3C . 你可能需要设置大写字母 Visible 财产 HtmlGenericControl 作为添加的结果,将在设计器文件中创建 runat="server"