为了账号安全,请及时绑定邮箱和手机立即绑定

.net viewstate问题

.net viewstate问题

烙印99 2018-12-06 11:51:43
怎么去除viewstate那些乱码呢???如果直接关掉的话,好多服务器控件功能就不管用了,大家来帮我解决一下吧,谢谢了 第一种方法,存到服务器上,这种方法会产生许多垃圾文件,不可取 protected override object LoadPageStateFromPersistenceMedium() { string viewStateID = (string)((Pair)base.LoadPageStateFromPersistenceMedium()).Second; string stateStr = (string)Cache[viewStateID]; if (stateStr == null) { string fn = Path.Combine(this.Request.PhysicalApplicationPath, @"App_Data/ViewState/" + viewStateID); stateStr = File.ReadAllText(fn); } return new ObjectStateFormatter().Deserialize(stateStr); } protected override void SavePageStateToPersistenceMedium(object state) { string value = new ObjectStateFormatter().Serialize(state); string viewStateID = (DateTime.Now.Ticks + (long)this.GetHashCode()).ToString(); //产生离散的id号码 string fn = Path.Combine(this.Request.PhysicalApplicationPath, @"App_Data/ViewState/" + viewStateID); //ThreadPool.QueueUserWorkItem(File.WriteAllText(fn, value)); File.WriteAllText(fn, value); Cache.Insert(viewStateID, value); base.SavePageStateToPersistenceMedium(viewStateID); }   第二种方法不知道session会不会丢失,如果丢失了肯定会有影响,怎么办?? protected LosFormatter losFormatter = new LosFormatter(); protected override object LoadPageStateFromPersistenceMedium() { string key = Request.RawUrl + "__viewstate"; if (Session[key] != null) { object obj = null; using (System.IO.MemoryStream stream = (System.IO.MemoryStream)Session[key]) { stream.Seek(0, System.IO.SeekOrigin.Begin); obj = losFormatter.Deserialize(stream); } Session[key] = null; return obj; } return null; } protected override void SavePageStateToPersistenceMedium(object viewState) { string key = Request.RawUrl + "__viewstate"; System.IO.MemoryStream stream = new System.IO.MemoryStream(); losFormatter.Serialize(stream, viewState); stream.Flush(); Session[key] = stream; } 其他更好的解决办法??
查看完整描述

12 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

不用服务器控件多好。。
查看完整回答
反对 回复 2018-12-09
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

做企业站要速度的
查看完整回答
反对 回复 2018-12-09
?
DIEA

TA贡献1820条经验 获得超2个赞

你可以有选择关闭一些viewstate,比如gridview的这种就可以关掉,一些button的可以不关闭 每个控件都有一个viewstate属性,你置为false就行了
查看完整回答
反对 回复 2018-12-09
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

绑定数据的控件关掉的话,翻页什么的话会出问题吧
查看完整回答
反对 回复 2018-12-09
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

你的 都不可取,还是 直接使用,不要管了。
查看完整回答
反对 回复 2018-12-09
?
holdtom

TA贡献1805条经验 获得超10个赞

最简单的方式就是右键编辑项目文件,然后另存,格式为utf-8.然后覆盖。就ok了。如果不行。俺帮不了你了
查看完整回答
反对 回复 2018-12-09
?
浮云间

TA贡献1829条经验 获得超4个赞

既然选择了快速,方便,那就用呗。 使用viewstate,还需要访问物理文件,每个请求都这样,得有多慢啊 如果在正常的使用过程中,页面合理的设计,构造,viewstate应该不是性能的主要原因
查看完整回答
反对 回复 2018-12-09
  • 12 回答
  • 0 关注
  • 401 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信