当前位置: 代码迷 >> ASP.NET >> 让.aspx页面里没有<input type="hidden" name="VIEWSTATE" id="VIEWSTATE"该怎么处理
  详细解决方案

让.aspx页面里没有<input type="hidden" name="VIEWSTATE" id="VIEWSTATE"该怎么处理

热度:2806   发布时间:2013-02-25 00:00:00.0
让.aspx页面里没有<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
网上,有不少的大型的.net网站,例如:当当,csdn论坛等,然而这些网站的.aspx页面里,在打开源文件查看,发现不了<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTA4MDgzODk0NQ9kFgJmD2QWAgIHD2QWAgIDD2QWAgIBD2QWBAIBDw8WAh4JTWF4TGVuZ3BE1vZGULKiVTeXN0......
这些记录服务控件状态的代码。不知道是如何处理的!
在网站也查找了不少方法的,仅仅加上EnableViewState="false"也还是有少量的,并且不能与服务器交互!
什么样的方式最好,把整个隐藏控件都给去掉,并且能与服务器交互!
有demo没?
谢谢!

------解决方案--------------------------------------------------------
ViewState可以有办法放在服务器端的.

另外,你说的那些网站,应该不是用了常规的方法,估计是整个生成HTML的
------解决方案--------------------------------------------------------
这个应该不能把... 生成静态网页或者用ajax技术, 服务端用.net来完成.
------解决方案--------------------------------------------------------
用HTML控件加上runat="server"
------解决方案--------------------------------------------------------
帮顶!
------解决方案--------------------------------------------------------
value保存了控件状态和值,采用Base64编码方式保存
 在Web.config文件的Pages配置节点中设置enableViewState="false",或者在每个Aspx页头部设置。

将<head runat="server">和<form id="form1" runat="server">中的runat="server"属性删除。asp.net默认不会再往客户端输出 __VIEWSTATE元素。


重写Page类中的LoadPageStateFromPersistenceMedium()和SavePageStateToPersistenceMedium(object state)方法。

protected LosFormatter losFormatter;

protected override object LoadPageStateFromPersistenceMedium()
{
string key = Request.RawUrl + "__viewstate";

if (Session[key] != null)
{
MemoryStream stream = (MemoryStream)Session[key];
stream.Seek(0, SeekOrigin.Begin);
return losFormatter.Deserialize(stream);
}

return null;
}

protected override void SavePageStateToPersistenceMedium(object state)
{
string key = Request.RawUrl + "__viewstate";

MemoryStream stream = new MemoryStream();

losFormatter.Serialize(stream, state);

stream.Flush();

Session[key] = stream;
}

重写Page类中的LoadPageStateFromPersistenceMedium()和SavePageStateToPersistenceMedium(object state)方法。 

------解决方案--------------------------------------------------------
参考
------解决方案--------------------------------------------------------
看看
------解决方案--------------------------------------------------------
ding
------解决方案--------------------------------------------------------
那也可以全部用Html控件+AJAX来实现你要求的功能
------解决方案--------------------------------------------------------
去掉<form runat="server">就不会出现这些viewstat代码了。
当然,也就不能进行本页面内的回发,不能使用大多数的服务端控件,但是repeater可以用。

要根据具体情况进行取舍,有复杂表单的页面我觉得还是应该使用viewstate的。
  相关解决方案