日期:2014-05-17  浏览次数:20440 次

asp.net网页模型中用Request.QueryString传递值遇到了麻烦的问题
我以前为了保存页面的一些变量(主要是该页面范围的全局变量)都用的viewstat或者session,最近公司要求尽量用Request.QueryString,停用session和viewstat.但是我遇到了非常大的麻烦,比如,点击一个button,他改变了一个页面全局变量page,这个变量代表页数,我需要将其提交给服务器使页面得到更新,就只能用Response.Redirect跳转地址,但是,改变page变量的目的是让页面呈现下一页的内容,在跳转页面后,需要Request.QueryString["page"]获得page的值,把它传递给数据展示控件.但是则在asp.net里实现不了,因为button事件处理代码中Response.Redirect之后的代码,都不会得到执行.请问如何解决这个问题

string s = "2";
            Response.Redirect("Default.aspx?page=" + s);
            page = Request.QueryString["page"];
            Label1.Text = page.ToString();
------解决方案--------------------
禁用viewstate 是为了 效率更快, 那就不要使用控件了 , 全用手写的就可以了!

而且你翻页时也完全可以用js+ajax来实现无刷新翻页
------解决方案--------------------
viewstat作为一种保存“状态”的方案,确实不错,但是,这仅仅是在内网或者快速开发的前提下,大量的viewstat不仅仅会让网页的载入数据量过于庞大,而且还会影响打开网页的速度。所以大部分人使用Reapter代码GribView,大部分人也开始转入MVC了。
请参考:http://www.cnblogs.com/wwan/archive/2010/11/18/1880357.html
------解决方案--------------------
1、把redirect放在最后来执行,但估计满足不了lz的需求;
2、把button改为hyperlink,然后为hyperlink控件绑定需要的地址,即querystring;
3、不要听信别人的什么所谓流行。全用querystring仅仅当访问量过大时,可以减少服务器负担,一般网站不存在这个问题