在前端页面中使用Ajax将数据传递到后台aspx或ashx进行处理,但是我发现每次请求都会重新初始化所有的变量,而我的需求是在现有数据的基础上不断添加数据。例如:
// 生成了一个字符串 $.post("MyHandler.ashx",{text: myString}, function(){});
// MyHandler.ashx List<string> dataList = new List<string>(); public void ProcessRequest(HttpContext context) { dataList.Add(context.Request["text"]); foreach(string text in List) context.Response.Write(text); }
本意是要通过不断添加然后返回这个字符串数组的,但是由于MyHandler.ashx每次都重新加载,所以每次dataList都会被清空。
我就想问问如何将dataList中的数据保存下来,使得每次处理请求的时候能够加入新的元素,即不断扩大List。
不想用数据库,所以不要给我使用数据库的解决方法。
谢谢
虽然不明白你这么做的初衷,但你想这么实现List扩大是肯定不行的,aspx和ashx的本质是一个httphander,当捕获请求后,由httphander工厂产生一个httphander处理该请求,也就是说,处理请求的hander是会变的。
另一方面,请求每次到达后,都会new一个新的List。
像楼上说的那样,使用Session或者Catch等保存你的List(你搜一下ASP.NET状态管理就知道了),或者在客户端实现List扩张,然后传给服务器
嗯,回去用Session试试看
最后还是用文件的形式保存了
定义一个全局变量,保存在全局变量中。或者用Session暂存
C#如何定义全局变量?
或者 放到Cache中也行
这个asp的保存机制有多很多啊,内置对象就有几个,随便选一个暂存就行,实在不知道弄,考虑用IO保存到记事本等介质中。
看来只能用文件了