浅谈ViewState原理
首先要知道,只有设定了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原理相关推荐
- 计算机中数制教学的游戏,浅谈计算机原理中的《数制及数制转换》
浅谈计算机原理中的<数制及数制转换> 论文联盟http:// 数制及其相互转换问题一直是学生学习过程中的难点.学生学习起来比较费力,并且不容易记住,在考试中也常常丢分,而且它也是学生进一步 ...
- Touch的秘密 浅谈触摸屏原理
URL:http://www.idnovo.com.cn/hardware/2010/1110/article_2099.html "触摸"流行风 触摸屏为何如此流行? 其实早在1 ...
- 浅谈ViewState
一.ViewState概述 ① ViewState是基于webform的 ② 在web窗体控件属性处设置runat = "server",这个控件会被附加一个隐藏的属性_ViewS ...
- 浅谈Dubbox原理
Dubbox介绍 Dubbox是一个分布式服务框架,前身是阿里旗下的开源项目Dubbo,后来阿里停止维护,当当网在Dubbo的基础上进行优化,并继续维护,为了与原来的Dubbo区分故将其改名为Dubb ...
- 浅谈SPICE原理及应用
引言 SPICE(Simulation program with Integrated Circuit Emphasis)作为电路级模拟程序,是许多仿真软件的核心,比如Tanner Tools.Cad ...
- 浅谈Git原理和常用命令(学习笔记)
因为多人和做的项目经常用Git但是对于git我总是不太理解,今天熬夜学习了一下 Git我们clone下来的项目的根目录下有一个 .git 的文件,这个不是我们的工作区,它叫做版本库,它来记录我们工作区 ...
- 浅谈vue-draggable原理
起因 众所周知,sortablejs是一个根据dom操作实现拖拽功能的插件,十分好用.但是当我们使用vue框架来进行开发的时候,就和vue所强调的数据驱动视图不符合了,所以这就有了vue-dragga ...
- CG-FX 风向传感器 聚碳 浅谈工作原理
产品概述 本产品外型小巧轻便,美观坚固,便于携带和组装,风向标形状设计合理,对自然界大气风向具有准确的定位作用.采用聚碳材质,具有防雨.防腐蚀.坚固实用等优点. 功能特点 ◆体积小,重量轻,野外携带安 ...
- 浅谈ajax原理、优缺点
ajax原理: Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.这其中最关键的一步就是从服务器获得请 ...
- 浅谈ASQ原理学习总结
转自http://www.cnblogs.com/waterystone/p/4920797.html 几乎所有的锁都是依赖于AbstractQueuedSynchronized的,无论是独占锁还是共 ...
最新文章
- 上交大博士生:博三经历5轮审稿被拒后,如今发10篇论文成为审稿人
- FCN全连接卷积网络(3)--Fully Convolutional Networks for Semantic Segmentation阅读(摘要部分)
- jquery是库还是框架?
- 常用Python文件
- azure机器学习_Azure机器学习中的数据清理
- 正确的CentOS系统配置
- Lwip协议详解(基于Lwip 2.1.0)TCP协议 (未完待续)
- CMM3和CMMI4的差别--过程域
- C#基础与VB基础比较
- 金蝶k3服务器系统要求,金蝶K3服务器安装及其相关要求[精选].doc
- 中西医结合耳鼻咽喉科疾病 100254
- 我了解的软件测试总结
- 教师必备,4款超实用的微信小程序分享~
- 使用Ballerina CLI工具开发Ballerina项目
- 实验室信息管理系统的进化史
- 商业智能BI推动制造业智能化转型
- 聚美优品广告词和经典分析
- 大白菜U盘重装Win10系统教程
- tex模版wins版本在mac中字体不对应问题解决方案
- ES插件在谷歌浏览器的安装