Multiview + UserControl 中UserControl如何判断首次执行
这个开发场景是使用MultiView构建多栏目多选项卡的后台布局,并用UserControl分割时出现的。
因为MultiView在服务器端还是会初始化所有View中的所有控件,所以哪怕不是第一次展示的View也会执行,这个时候IsPostback判断就带来了问题。
由于最后控件没有输出到客户端,所以这些控件的stata没有记录,显示的就都是空了。
问题就归结到定制一个自己的 “IsPostBack“。
首先在一定范围(视你的MultiView嵌套程度决定)的用户控件插入一个父类,然后添加
public int BrowserTimes//记录下使用的次数 { get { return (int)(ViewState[this.GetType().FullName] ?? 0); } set { ViewState[this.GetType().FullName] = value; } } protected bool isFirstTime { get { int times = (int)(ViewState[this.GetType().FullName] ?? 0); BrowserTimes++;//保证只调用一次 return times == 0; } }
然后在相应的Multiview页中
void SetUserCenterControl(View v) { if (v.Controls.Count > 0 ) { foreach (System.Web.UI.Control c in v.Controls) { UserCenterControl ucc = c as UserCenterControl; if (ucc != null) ucc.BrowserTimes++; } } } #region Change Tab Events //Change Sections in User Center protected void linkUserCenterChangeTab(object sender, CommandEventArgs e) { View v = mvUserCenter.Views[mvUserCenter.ActiveViewIndex]; SetUserCenterControl(v); mvUserCenter.ActiveViewIndex = int.Parse(e.CommandArgument.ToString()); }
作者:today4king
出处:https://www.cnblogs.com/jinzhao/archive/2009/12/04/1617123.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2008-12-04 Snippet Compiler 学习C#的小工具