在两个ASP.NET页面之间传递值

呵呵,没有想到会在这个问题上花费这么长时间。

CSDN里有一篇文章里列了三个方法:QueryString,Session和Server.Transfer
http://www.csdn.net/develop/read_article.asp?id=21539
Session变量显然不是很好,因为两个页面之间最好还是使用局部变量。否则如Meyer所说,可能会有项目组中Session命名冲突的问题。
QueryString的方法似乎比较古老,要手工去拼一个字符串也挺麻烦的。
Server.Transfer的方法居然有这么多人说好,这种方法要求被调用的页面去引用调用的页面,这种方法明显违反编程的原则。原来被调用的页面可以独立使用,可以被其他页面调用,用了这种方法就不行了!!!

继续查询,原来asp.net还有这么多种方法来维持状态:
http://www.xxy8.com/v2/2004-1/20041603548.htm
http://www.xxy8.com/v2/2004-1/20041603521.htm
Application显然不行,因为是全局的。同理,配置文件的方法也不行。
cookie的方法也排除。
Context,Session,QueryString的方法前面已经讨论过了。

剩下的可以选择的方法:Form Post,Cache,ViewState
Form Post似乎也是ASP时代的方法。暂时不考虑。
ViewState适用在一个页面中保存状态,要在两个页面之间使用似乎也不行。

最后只要选择Cache.
其实我也不是在两个ASP.NET之间传递数据,而是在ASP.NET页面和ASP.NET用户控件之间传递数据。用户控件是动态装入的。作如下试验:在ASP.NET页面中装入用户控件的时候
Cache[“Test“] =“Test“
在用户控件的Page_Load方法中:
Label1.Text  = Page.Page.Cache[“Test“].ToString;
成功:Label1显示为“Test”.

但是Meyer的项目似乎用的是ViewState。疑惑中......
http://www.cnblogs.com/meyer/archive/2004/04/23/7409.aspx





posted on 2004-05-11 19:59  一个春天  阅读(3847)  评论(14编辑  收藏  举报

导航