黑马程序员技术交流社区

标题: 关于asp.net基础视频中的自增问题 [打印本页]

作者: 黑马刘俊    时间: 2013-1-24 11:46
标题: 关于asp.net基础视频中的自增问题
本帖最后由 黑马刘俊 于 2013-1-24 14:56 编辑
  1. public class Handler : IHttpHandler {

  2. public void ProcessRequest (HttpContext context) {
  3. context.Response.ContentType = "text/html";
  4. int a = 0;
  5. string strNum = context.Request.Form["txtnum"];
  6. string path = context.Request.MapPath ( "HTMLModel.htm" );
  7. string strHTML = System.IO.File.ReadAllText (path );
  8. if ( string.IsNullOrEmpty(strNum) )
  9. {

  10. strHTML = strHTML.Replace ( "{num}", "1" );

  11. }
  12. else
  13. {
  14. if ( int.TryParse ( strNum, out a ) )
  15. {
  16. a++;
  17. strHTML = strHTML.Replace ( "{num}", a.ToString ( ) );
  18. }
  19. }
  20. context.Response.Write ( strHTML );
  21. }

  22. public bool IsReusable {
  23. get {
  24. return false;
  25. }
  26. }

  27. }
复制代码
上午看老师的asp.net基础视频,讲到在页面中实现文本框中的内容自增的时候,由于每次提交数据的时候服务器都会重新创建页面对象,也就是会重新初始化字段a为0,所以文本框中的值一直是1,不会实现自增,老师讲的方法是将文本框中的内容取出来当参数发送给服

务器,服务器在将该参数自增1发回给客户端浏览器。

我想 ,能不能将字段a设置为静态变量,因为静态变量是类共有的,不会因为重新创建对象而重新初始化,是不是一样也能达到自增的目的。

另外,这两种方法有什么不同的地方?


作者: 靳石磊    时间: 2013-1-24 11:55
用静态变量的方法,是可以实现自增的,但在多用户模式下,每个用户(客户端)都可以改变静态变量的值,到时候你获得的自增变量就不知道是几了~
这种情况下应该用viewstate对象,将变量保存在viewstate对象中,这样自增变量才能是相对你这个客户端和服务器端的一对一关系的改变。。。
作者: 朱京辉    时间: 2013-1-24 12:56
全局变量:   同一页面:ViewState     ;      不同页面:session Session[var]跟Application[var]

这是一种直接的全局变量的方法,可以防止回访影响。回访过程中,会初始化数据.

在网页中,ViewState可以避免回访, 你试试,可以的
作者: 黑马刘俊    时间: 2013-1-24 14:55
谢谢了,




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2