我们通过一个DIV来实现一个数字自增的效果 来解释如何使用hidden元素保存非表单元素的视图信息。
这里特别说明一下 HTML元素分表单元素和非表单元素,表单元素就是input开头的元素,把它们放到一个
form 点击提交按钮的时候,可以再服务器通过表单元素的name属性索引到value值。
而其他的一些元素 比如DIV 之类的 不是表单元素,当你点提交的时候,DIV的信息是不会提交到服务器的。
我们现在就来做一个DIV里面的数字能够自增的例子,来解释下如何使用hidden保存非表单元素的数据。
方式一:
下面是TTML页面:
其中@num1就是DIV的显示内容的占位符
这是button(不是submit按钮)按钮的脚本代码:
它是在表单提交之前,将DIV中的内容赋给ID为hidden1的hidden的value属性,原因是hidden是表单元素,它可以提交到服务器,我们
在服务器可以通过它的name属性 获取到它的value值,于是就间接的获取到了DIV的内容了。
下面是一般处理文件的代码:
运行ashx,由于是第一次进入,我们将@num1占位符替换成0了、
然后当我们点自增按钮的时候,首先会执行javascript代码,此代码的作用我在上面已经说了,然后将表单提交到
服务器后台的一般处理文件,执行sum++的操作,于是就实现了DIV中内容自增的效果。
原理是 通过一个hidden表单元素,间接的保存DIV里的内容 来达到把DIV里的内容提交到服务器的这么一个过程。实质上,asp.net网页也是通过这种方式来保存当前HTML页
中非表单元素的属性值,以及表单元素中非value属性的属性值。它会全部保存提交到服务器,如果一个页面中有太多了HTML标签,那么视图状态中的数据量是很大的。
方式二:
我们可以把绑定当前非表单元素值得隐藏域元素的value值设为和当前元素占位符一模一样的形式。
在ahsx文件中,我们一开始会判断当前请求是第一次还是点了自增按钮 。如果是第一次,
我们就在服务器端自作主张的 把模板中的@num1替换成0,
由于hidden和 div中都有@num1这样一个占位符,所以它们两都会被替换掉。
在每一次用户点自增提交按钮将当前用户信息提交到服务器的时候,其实我们都是
从hidden中读取当前自增的数值的,DIV只不过是一个显示当前数值的容器罢了。真正起作用的
是hidden ,这也是视图状态中如何保存非表单元素值的一个方法。
---------------------- Windows Phone 7手机开发、 .Net培训、期待与您交流! ----------------------详细请查看: http://net.itheima.com/