数据自增

实现input的自增:点击按钮input中的值自动增加,代码见备注。点击刷新就一直是值不变,只有点击提交才会变, 分析原理。用开发人员工具篡改文本框的值自增就从新的值开始了。
 
 1 <%@ WebHandler Language="C#" Class="Handler3" %>
 2 
 3 using System;
 4 using System.Web;
 5 
 6 public class Handler3 : IHttpHandler {
 7     int a = 0;
 8     public void ProcessRequest (HttpContext context) {
 9 
10        if (!string.IsNullOrEmpty(context.Request.Form["IsPostBack"]))
11        {
12            string txtNum = context.Request.Form["txtNum"];
13             int.TryParse(txtNum,out a);
14        }
15        //string Num = context.Request.Form["txtNum"];
16        //int.TryParse(Num, out a);
17        a = a + 1;
18        context.Response.Write("
"); 19 20 } 21 22 public bool IsReusable { 23 get { 24 return false; 25 } 26 } 27 28 }

 

 1 input自增
 2 
"Input自增.ashx"> 3 "hidden" name="ispostback" value="true" /> 4 "text" name="value" value="@value" />"submit" value="增加" /> 5
6 string ispostback = context.Request["ispostback"]; 7 string value = "1"; 8 if (ispostback == "true") 9 { 10 value = context.Request["value"]; 11 value = (Convert.ToInt32(value) + 1).ToString(); 12 } 13 string filename = HttpContext.Current.Request.MapPath("/1/Input自增.htm"); 14 string s = File.ReadAllText(filename); 15 s = s.Replace("@value", value); 16 context.Response.Write(s);
View Code


                                                                               •使用aspx重写input的自增。

•练习:加法计算器。常见错误:把htm设置成了起始页。type=submit才会自动提交表单,type=button不会自动提交。从ashx启动和从htm启动的区别
 
为什么单使用div在服务器取不出来值呢?因为不是服务器来读取客户的网页,而是浏览器收集客户在表单中输入的字段,然后形成请求参数发给服务器处理程序, 由于没有把div当前的innerText发给服务器,所以服务器无法得知当前的值。也不要幻想有办法能将div的innerText提交给服务器,因为 只有设定了name的input、textarea、select的value属性值才会被提交给服务器。
实现div内文本的自增。因为服务器不记得上次给浏览器的值是什么,而且不像input那样会将上次的值重新提交回来,因此浏览器需要用一个隐藏字段将上一次的值保存下来。
1 div自增
2 
"Div自增.ashx"> 3 "hidden" name="ispostback" value="true" /> 4 "hidden" name="value" value="@value" /> 5
@value
"submit" value="增加" /> 6
7 服务端代码几乎和实现input的自增一样。
View Code


•http无状态,每次请求都是由一个新的DivAutoInc对象来处理请求。如果把value搞成static可以实现,但是两个用户访问的话就会串了。而用Input方式的话两个人各自点各自的,不会互相影响。

非表单元素无法将客户端的元素值传递给服务器端,即使是表单元素也只能传递value值,对于其他属性值比如背景颜色、大小等也是无法传递的,因此对于这些值都要存在隐藏字段中。这就是ASP.Net中ViewState的实现原理。
•其实div中的只是起到显示作用而已,使用IE的“开发人员工具”修改div的innerText,然后点击按钮发现值并没有按照我们修改以后的递增。而修改input版本的则有效果。
 

转载于:https://www.cnblogs.com/yaoxc/archive/2013/05/27/3102797.html

你可能感兴趣的:(数据自增)