当前位置:编程学习 > C#/ASP.NET >>

怎么去除viewstate那些乱码呢???

怎么去除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;
}
其他更好的解决办法?? .net viewstate --------------------编程问答-------------------- 如果页面中用到了例如文本框或者输入类的控件只能禁止某些控件的viewstate,这样的结果是页面中还会产生那些乱码。如果没有这些就方便了。直接将页面中的form控件去掉。所有的乱码就都没有了。 --------------------编程问答-------------------- 不知道viewstate的乱码(base64)有什么影响吗?美观?

如果为了美观可以用js屏蔽鼠标右键; --------------------编程问答-------------------- 存到数据库中 --------------------编程问答-------------------- 用MVC开发项目。 --------------------编程问答--------------------

我也纠结过浏览器查看源码能好看些,你可以自己重写控件,或者换其他语言、技术  mvc可以的 --------------------编程问答-------------------- 是这样的,我们这了seo部门说这影响seo,可蛋疼 --------------------编程问答--------------------
引用 6 楼 weiwin124 的回复:
是这样的,我们这了seo部门说这影响seo,可蛋疼

让你们部门换成ASP.NET MVC来开发,MVC里面是不会含有你说的那些东西的。 --------------------编程问答-------------------- 问题是我们做的都是些企业站,用mvc太大了吧 --------------------编程问答-------------------- 1.用MVC
2.禁用viewstate //viewstate=false
并且页面中不用带事件性制的服务器控件 例如:asp:botton 直接用 html的submit等
并且将<from id="form1" action="xxx.aspx" runat="server" 这个runat="server"去掉

这样同样可以用Reapter来显示数据,不会出现乱码 就是button有点麻烦需要用提交机制
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,