首先要知道,只有设定了name的input,textarea,select,它们的value属性才会被提交给服务器,而即使是设定了name 的表单元素,它能提交给服务器的也只能是value属性,其他的比如大小,背景色等也是无法提交给服务器的,所以要将这些值存在一个隐藏的字段中。
举两个例子来解释一下:
1. input(textbox)版本的自增,由于textbox本身就是input表单元素,所以它本身的value值会提交给服务器,当点击按钮,触发自增事件,value值发生改变,相应的textbox中的值也会发生改变。

2.div版的自增,由于div本身没有name,所以无法将div中的innertext值提交给服务器,所以要想实现自增效果,必须要设置一个input的隐藏(hidden)字段,并且将它的value属性设为与div中的innertext相同的值,这样当点击按钮,触发某个事件的时候,input隐藏字段将value值提交给服务器,当value值发送改变时,input隐藏字段中的value值也发生了变化,而由于div中的innertext值与value值相同,所以显示的是div中的值发生了变化,从而达到了div的自增,而实际上div只不过是达到了显示input中隐藏字段的value值。

也就是说,在div版本自增中添加 的<input type="hidden" name="num" value="@value">这条语句,实现的效果就是ViewState。

<form action="自增.ashx">
    <input type="hidden" name="ispostback" value="true" />
    <input type="hidden" name="num" value="@value" />
    <div>@value</div>
    <input type="submit" value="自增" />
</form>

ashx代码:
public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/html";
        string ispostback=context.Request["ispostback"];
        string value = "0";
        if(ispostback=="true")
        {
            value=context.Request["num"];
            int i = Convert.ToInt32(value);
            i++;
            value = i.ToString();
        }
       
        string fullpath = context.Server.MapPath("自增.htm");
        string webhtml = System.IO.File.ReadAllText(fullpath);
        webhtml = webhtml.Replace("@value",value);
        context.Response.Write(webhtml);
    }

转载于:https://www.cnblogs.com/Jove-wei/archive/2011/11/30/2269684.html

浅谈ViewState原理相关推荐

  1. 计算机中数制教学的游戏,浅谈计算机原理中的《数制及数制转换》

    浅谈计算机原理中的<数制及数制转换> 论文联盟http:// 数制及其相互转换问题一直是学生学习过程中的难点.学生学习起来比较费力,并且不容易记住,在考试中也常常丢分,而且它也是学生进一步 ...

  2. Touch的秘密 浅谈触摸屏原理

    URL:http://www.idnovo.com.cn/hardware/2010/1110/article_2099.html "触摸"流行风 触摸屏为何如此流行? 其实早在1 ...

  3. 浅谈ViewState

    一.ViewState概述 ① ViewState是基于webform的 ② 在web窗体控件属性处设置runat = "server",这个控件会被附加一个隐藏的属性_ViewS ...

  4. 浅谈Dubbox原理

    Dubbox介绍 Dubbox是一个分布式服务框架,前身是阿里旗下的开源项目Dubbo,后来阿里停止维护,当当网在Dubbo的基础上进行优化,并继续维护,为了与原来的Dubbo区分故将其改名为Dubb ...

  5. 浅谈SPICE原理及应用

    引言 SPICE(Simulation program with Integrated Circuit Emphasis)作为电路级模拟程序,是许多仿真软件的核心,比如Tanner Tools.Cad ...

  6. 浅谈Git原理和常用命令(学习笔记)

    因为多人和做的项目经常用Git但是对于git我总是不太理解,今天熬夜学习了一下 Git我们clone下来的项目的根目录下有一个 .git 的文件,这个不是我们的工作区,它叫做版本库,它来记录我们工作区 ...

  7. 浅谈vue-draggable原理

    起因 众所周知,sortablejs是一个根据dom操作实现拖拽功能的插件,十分好用.但是当我们使用vue框架来进行开发的时候,就和vue所强调的数据驱动视图不符合了,所以这就有了vue-dragga ...

  8. CG-FX 风向传感器 聚碳 浅谈工作原理

    产品概述 本产品外型小巧轻便,美观坚固,便于携带和组装,风向标形状设计合理,对自然界大气风向具有准确的定位作用.采用聚碳材质,具有防雨.防腐蚀.坚固实用等优点. 功能特点 ◆体积小,重量轻,野外携带安 ...

  9. 浅谈ajax原理、优缺点

    ajax原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得请 ...

  10. 浅谈ASQ原理学习总结

    转自http://www.cnblogs.com/waterystone/p/4920797.html 几乎所有的锁都是依赖于AbstractQueuedSynchronized的,无论是独占锁还是共 ...

最新文章

  1. 上交大博士生:博三经历5轮审稿被拒后,如今发10篇论文成为审稿人
  2. FCN全连接卷积网络(3)--Fully Convolutional Networks for Semantic Segmentation阅读(摘要部分)
  3. jquery是库还是框架?
  4. 常用Python文件
  5. azure机器学习_Azure机器学习中的数据清理
  6. 正确的CentOS系统配置
  7. Lwip协议详解(基于Lwip 2.1.0)TCP协议 (未完待续)
  8. CMM3和CMMI4的差别--过程域
  9. C#基础与VB基础比较
  10. 金蝶k3服务器系统要求,金蝶K3服务器安装及其相关要求[精选].doc
  11. 中西医结合耳鼻咽喉科疾病 100254
  12. 我了解的软件测试总结
  13. 教师必备,4款超实用的微信小程序分享~
  14. 使用Ballerina CLI工具开发Ballerina项目
  15. 实验室信息管理系统的进化史
  16. 商业智能BI推动制造业智能化转型
  17. 聚美优品广告词和经典分析
  18. 大白菜U盘重装Win10系统教程
  19. tex模版wins版本在mac中字体不对应问题解决方案
  20. ES插件在谷歌浏览器的安装

热门文章

  1. Azkaban时区问题导致调度差1天
  2. Java8初体验(二)Stream语法详解
  3. 数据是如何从浏览器传输到服务器
  4. js new到底干了什么,new的意义是什么?
  5. 自动化测试 短信验证登录
  6. HRESULT:0x80040228 异常解决
  7. DAY 34 进程通信、消费者模型和线程
  8. 区块链供应链金融应用场景解决方案
  9. Qt常用类——Qpoint
  10. wsdl2java工具生成客户端代码