不呈现隐藏(visible =“false”)面板,但是对包含的元素执行数据绑定.为什么这样做?更重要的是,如何避免它?
这是一个烦人的例子:
<asp:Panel ID="UserPanel" runat="server" visible="<%# SelectedUser != null %>"> <%# SelectedUser.Name %> </asp:Panel>
如果SelectedUser为null,则不会呈现该面板,但会评估SelectedUser.Name并生成错误.
我显然可以写<%#SelectedUser!= null? SelectedUser.Name:“”%>但它增加了混乱.
当我知道不需要时,有没有办法简单而优雅地阻止面板内的数据绑定?
解决方法
我可能会迟到这一点,但我也觉得这很烦人.
如果我正在渲染一个项目列表,每个项目可能是一个不同的类,我经常需要这个 – 在这种情况下,数据绑定表达式中的属性将在其他类类型的不可见部分中给出错误.你会知道你是否想要这个.
我找到的最佳解决方案如下所述:
解决方案是标准PlaceHolder控件的简单覆盖,以在Visible为false时禁止绑定子控件:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI.WebControls; namespace Website.Controls { public class DataPlaceHolder : PlaceHolder { protected override void DataBindChildren() { if (Visible) { base.DataBindChildren(); } } } }
原文地址:https://www.jb51.cc/aspnet/245264.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。