zoukankan      html  css  js  c++  java
  • 数据自增

    实现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("<form action='' method='post' ><input type='text' name='txtNum'  value='"+a.ToString()+"' /><input type= 'hidden' name='IsPostBack' value='1' /><input type='submit' value='提交' /></form>");
    19         
    20     }
    21  
    22     public bool IsReusable {
    23         get {
    24             return false;
    25         }
    26     }
    27 
    28 }
     1 input自增
     2 <form action="Input自增.ashx">
     3 <input type="hidden" name="ispostback" value="true" />
     4 <input type="text" name="value" value="@value" /><input type="submit" value="增加" />
     5 </form>
     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 <form action="Div自增.ashx">
    3 <input type="hidden" name="ispostback" value="true" />
    4 <input type="hidden" name="value" value="@value" />
    5 <div>@value</div><input type="submit" value="增加" />
    6 </form>
    7 服务端代码几乎和实现input的自增一样。
    View Code


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

    非表单元素无法将客户端的元素值传递给服务器端,即使是表单元素也只能传递value值,对于其他属性值比如背景颜色、大小等也是无法传递的,因此对于这些值都要存在隐藏字段中。这就是ASP.Net中ViewState的实现原理。
    •其实div中的只是起到显示作用而已,使用IE的“开发人员工具”修改div的innerText,然后点击按钮发现值并没有按照我们修改以后的递增。而修改input版本的则有效果。
     
  • 相关阅读:
    20162317袁逸灏 第十六周实验报告:实验五 网络编程与安全
    20162317-20162315结对编程-四则运算(挑战出题)
    第十四周实验报告:实验四 Android程序设计
    20162305 2016-2017-2 《程序设计与数据结构》第9周学习总结
    20162305 2016-2017-2 《程序设计与数据结构》第8周学习总结
    20162305 实验二 Java面向对象程序设计 实验报告
    20162305 2016-2017-2 《程序设计与数据结构》第7周学习总结
    20162305 2016-2017-2 《程序设计与数据结构》第6周学习总结
    20162305 2016-2017-2 《程序设计与数据结构》第5周学习总结
    20162305 李昱兴 实验报告一
  • 原文地址:https://www.cnblogs.com/yaoxc/p/3102797.html
Copyright © 2011-2022 走看看