ASP.net中处理条件占位符的正确方法
我仍然习惯于ASP.NETWebForms处理事情的方式,但这一点仍然让我感到困惑。在某些情况下,如果对象为null,则应该显示标记,并且该标记应该包含来自该对象的值 一个非常简单的例子:ASP.net中处理条件占位符的正确方法,asp.net,webforms,Asp.net,Webforms,我仍然习惯于ASP.NETWebForms处理事情的方式,但这一点仍然让我感到困惑。在某些情况下,如果对象为null,则应该显示标记,并且该标记应该包含来自该对象的值 一个非常简单的例子: <asp:PlaceHolder runat="server" Visible='<%# myObject != null %>'> <span><%= myObject.Property %></span> </asp:PlaceHo
<asp:PlaceHolder runat="server" Visible='<%# myObject != null %>'>
<span><%= myObject.Property %></span>
</asp:PlaceHolder>
问题是ASP.net似乎会解析占位符的内容,而不管其可见性如何。以上代码以错误结尾:
对象引用未设置为对象的实例。
有没有一种方法可以在不占用一百万的情况下处理此问题?设置占位符服务器端的可见性(即在您的代码中) 例如:
this.placeholdername.Visible = true;
if ( myObject == null )
{
this.placeholdername.Visible = false;
}
这可能会起作用:
<asp:PlaceHolder runat="server">
<span runat="server" Visible='<%# myObject != null %>'><%= myObject.Property %></span>
</asp:PlaceHolder>
您也可以通过使用内联条件来实现这一点
<%if (myObject != null) { %>
//Control here
<% } %>
//控制这里
.Net仍将解析子控件,而不管父控件的可见性如何。所以这是意料之中的
您当然可以使用文字,或者只是确保创建了一个对象,但也可以使用一个开关来设置是否显示该对象
另一种方法是使用中继器并将中继器数据绑定到对象。如果对象为null,那么中继器将不会创建它的子对象…您应该尽可能避免使用内联脚本标记
。在您的代码中,您可以设置该控件的可见性。@Muffindman这是有争议的。正确使用简单的内联脚本可以产生更多的声明性标记。