在不可见的asp.net面板中阻止数据绑定
不呈现隐藏(visible =“false”)面板,但是对包含的元素执行数据绑定.为什么这样做?更重要的是,如何避免它?
这是一个烦人的例子: <asp:Panel ID="UserPanel" runat="server" visible="<%# SelectedUser != null %>"> <%# SelectedUser.Name %> </asp:Panel> 如果SelectedUser为null,则不会呈现该面板,但会评估SelectedUser.Name并生成错误. 我显然可以写<%#SelectedUser!= null? SelectedUser.Name:“”%>但它增加了混乱. 当我知道不需要时,有没有办法简单而优雅地阻止面板内的数据绑定? Panel控件在这里并不重要,它可以是一个带有runat =“server”的纯HTML元素的占位符. 解决方法
我可能会迟到这一点,但我也觉得这很烦人.
如果我正在渲染一个项目列表,每个项目可能是一个不同的类,我经常需要这个 – 在这种情况下,数据绑定表达式中的属性将在其他类类型的不可见部分中给出错误.你会知道你是否想要这个. 我找到的最佳解决方案如下所述: http://hermanussen.eu/sitecore/wordpress/2011/04/prevent-nullrefs-when-databinding-with-placeholders/ 解决方案是标准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(); } } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 为什么我的样式表重定向到我的登录?
- asp.net CustomValidator从不触发OnServerValidate
- asp.net-mvc – ASP.NET MVC向最终用户显示操作成功
- asp.net-mvc – 格式化日期只有月份和年份 – “MMM-yyyy”
- 打造自己的.NET Core项目模板
- 如何在asp.net中获取服务器/网站的IP地址?
- 在ASP.NET应用程序中使用out-of-process会话状态的SQL Serv
- asp.net – 无法在ASP应用程序中调试某些aspx页面
- asp.net-mvc-3 – RedirectToAction在另一个控制器无法正常
- asp.net-mvc-3 – MVC3未终止字符串常量语法错误
- asp.net-mvc – 我应该将.edmx和生成的POCO类放在
- asp.net-mvc – @ Html.Action in Asp.Net Core
- asp.net-mvc – Asp.net Mvc 2:存储库,分页和过
- REST API是否区分大小写或非区分大小写?
- ASP.NET Url重写
- asp.net-mvc – ASP.NET MVC:获取RouteTable路由
- asp.net – 使用/ signalr / ping调用时使用长轮
- asp.net-mvc – 在ASP.NET MVC中处理控件显示逻辑
- asp.net-mvc – Gzip压缩无法运行ASP.net MVC5
- asp.net-web-api – 带有PUT或PATCH谓词的ASP.NE