A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马刘俊 中级黑马   /  2013-1-24 11:46  /  1330 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黑马刘俊 于 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设置为静态变量,因为静态变量是类共有的,不会因为重新创建对象而重新初始化,是不是一样也能达到自增的目的。

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

评分

参与人数 1技术分 +1 收起 理由
邓艳秋 + 1

查看全部评分

3 个回复

倒序浏览
用静态变量的方法,是可以实现自增的,但在多用户模式下,每个用户(客户端)都可以改变静态变量的值,到时候你获得的自增变量就不知道是几了~
这种情况下应该用viewstate对象,将变量保存在viewstate对象中,这样自增变量才能是相对你这个客户端和服务器端的一对一关系的改变。。。

评分

参与人数 1技术分 +1 收起 理由
邓艳秋 + 1

查看全部评分

回复 使用道具 举报
全局变量:   同一页面:ViewState     ;      不同页面:session Session[var]跟Application[var]

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

在网页中,ViewState可以避免回访, 你试试,可以的

评分

参与人数 1技术分 +1 收起 理由
潘梦军 + 1

查看全部评分

回复 使用道具 举报
谢谢了,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马