Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我不能在没有runat=server的情况下绑定控件的可见部分?_C#_Asp.net - Fatal编程技术网

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构成服务器控制。标记是内联的,而不是块。感谢注意,它是固定的:标记是内联的,而不是块。感谢注意,它是固定的:您不能在服务器控件的属性中使用。您必须改为使用和数据绑定,或从代码隐藏进行设置。不能在服务器控件的属性中使用。您必须改为使用和数据绑定,或者从代码隐藏中进行设置。