C# 为什么我不能在没有runat=server的情况下绑定控件的可见部分?
换句话说,为什么我不能这样做:C# 为什么我不能在没有runat=server的情况下绑定控件的可见部分?,c#,asp.net,C#,Asp.net,换句话说,为什么我不能这样做: <a id="projectsButton" visible=<%= someFunctionWhichEvalsToFalse() ? false : true %>> </a> 它似乎什么也没做。我通过切换false和true来检查这一点 对此我能做些什么?您可以这样做,但它不会做任何事情,因为HTML没有可见属性 相反,您可以设置display CSS属性,如下所示: <a id="projectsButton"
<a id="projectsButton"
visible=<%= someFunctionWhichEvalsToFalse() ? false : true %>>
</a>
它似乎什么也没做。我通过切换false和true来检查这一点
对此我能做些什么?您可以这样做,但它不会做任何事情,因为HTML没有可见属性 相反,您可以设置display CSS属性,如下所示:
<a id="projectsButton"
style="display: <%= someFunctionWhichEvalsToFalse() ? "none" : "inline" %>">
<% if (!someFunctionWhichEvalsToFalse()) { %>
<a id="projectsButton"></a>
<% } %>
您可以这样做,但它不会做任何事情,因为HTML没有可见属性 相反,您可以设置display CSS属性,如下所示:
<a id="projectsButton"
style="display: <%= someFunctionWhichEvalsToFalse() ? "none" : "inline" %>">
<% if (!someFunctionWhichEvalsToFalse()) { %>
<a id="projectsButton"></a>
<% } %>
Visible仅对服务器控件可用,因此需要runat=server 如果要在不将其作为服务器控件的情况下执行此操作,可以尝试以下操作:
<a id="projectsButton" style='display:<%= someFunctionWhichEvalsToFalse() ? "none" : "inline" %>'></a>
Visible仅对服务器控件可用,因此需要runat=server 如果要在不将其作为服务器控件的情况下执行此操作,可以尝试以下操作:
<a id="projectsButton" style='display:<%= someFunctionWhichEvalsToFalse() ? "none" : "inline" %>'></a>
这将使用visible属性将a元素呈现到屏幕上,根据,该属性不是a元素的有效属性。您可能希望设置HtmlGenericControl的大写可见属性,该属性将在设计器文件中创建,这是将runat=server添加到元素声明中的结果。这将使用Visible属性将a元素呈现到屏幕上,而Visible属性对于a元素来说不是有效的属性。您可能希望设置HtmlGenericControl的大写可见属性,该属性将在设计器文件中创建,作为向元素声明添加runat=server的结果。换句话说,您的问题是,如果HTML元素不是服务器控件,为什么不能对其使用服务器控件属性。答案是因为它不是服务器控件,服务器控件属性只对服务器控件起作用。HTML标记被视为纯文本 换句话说,您的问题是为什么不能在HTML元素上使用服务器控件属性而不使用服务器控件。答案是因为它不是服务器控件,服务器控件属性只对服务器控件起作用。HTML标记被视为纯文本 您可以在CSS中显示:无以隐藏元素,尽管元素将被发送到客户端。要真正隐藏它,可以将其包装在控件中并绑定占位符上的可见属性
<asp:PlaceHolder ID="placeholder" runat="server" Visible="<%# someFunctionWhichEvalsToFalse() %>">
<a id="projectsButton" href="#">link</a>
</asp:PlaceHolder>
这将阻止链接html被发送到客户端。您可以在CSS中显示:无以隐藏元素,尽管元素将被发送到客户端。要真正隐藏它,可以将其包装在控件中并绑定占位符上的可见属性
<asp:PlaceHolder ID="placeholder" runat="server" Visible="<%# someFunctionWhichEvalsToFalse() %>">
<a id="projectsButton" href="#">link</a>
</asp:PlaceHolder>
这将阻止链接html发送到客户端。如果是这种情况,为什么Visual Studio将其作为IntelliSense中的属性?尽管VS IntelliSense毫无意义,但这是正确的答案+1并被接受。它可能显示为可见,因为它是由runat=server构成服务器控制的HTML元素的合法属性。如果是这种情况,为什么Visual Studio将其作为IntelliSense的属性?尽管VS IntelliSense毫无意义,但这是正确的答案+1并被接受。它可能显示为可见,因为它是一个合法的HTML元素属性,这些元素通过runat=server构成服务器控制。标记是内联的,而不是块。感谢注意,它是固定的:标记是内联的,而不是块。感谢注意,它是固定的:您不能在服务器控件的属性中使用。您必须改为使用和数据绑定,或从代码隐藏进行设置。不能在服务器控件的属性中使用。您必须改为使用和数据绑定,或者从代码隐藏中进行设置。