如果你一开始就使用asp.net网站,你会发现你网站的每次往返之间都是会保存上一次的提交的信息的,这不是不无道理的。原因是,asp.net框架 会将非表单元素或者是表单元素的所有信息存放在一个类型为hidden的input标签里 提交到服务器去。
这是一个asp.net平台下的一个网页的HTML标签,它默认帮我们添加了一个<input type="hidden" name="_VIEWSTATE" />的一个表单元素,它就是负责将上次的信息提交到服务器去,以便使用户觉得 两次请求之间是“有状态的“。
现在在和特别说明一点。利用type=hidden标签的一个重要原因是,不是所有的dom元素的数据都能提交到服务器的,只有input 元素,以及确定了name 和value的dom元素,才能将数据提交到服务器,其他的要想和服务器进行交互,那就必须依靠 type=hidden这样一个隐藏域来完整,(你用别的input也可以,不过使用隐藏域已经是一个不成文的规定了)
还是接着上篇日记的那个例子,我们要得到 用户输入了姓名之后,返回回来的页面中,文本框中依然要保存用户的姓名、
欲达此目的,我必须提出两个新的概念了,”模板“和”占位符“;
我们把当前的HTML页面当成是一个模板,并在模板中添加几个占位符,以便能够完成 视图恢复这么一个功能。
其中@username就是我的占位符,用户在响应用户的时候,恢复上一次文本框中的信息。
我还增加了一个name 为 ispostback的hidden控件 用户检测用户是第一个进入网站,还是点确定按钮进入。
下面是一般处理文件的代码:
这个时候 我们启动的就不是htm文件了,而是ahsx文件。
在文本框中输入”令狐冲“:
点击确定按钮:
我们发现 我们的”令狐冲“又恢复到了文本框里了。
这是怎么实现的呢?
我来说说具体流程:
我们可以将整个网站分为三个块,第一:模板 第二:占位符,第三:一般处理文件。
我们的每一个象用户展示的页面都是通过一般处理文件读取模板信息 ,并将模板信息发送给用户浏览器这么一个模式运行的。
但是这个模板 不是一成不变的,它是动态生成的,动态的关键在于,我在每个模板文件中都设置了一个占位符,通过将用户提交过来的信息 与当前占位符交换位子的方式,动态的生成一个HTML页面。而所有的这个过程都是在一般处理文件中执行的。这就完成了一个 视图状态保存的效果了。
上述的例子:都是建立在input表单元素上的,所以很容易恢复。下篇日记,我们来使用非表单元素也来完成视图状态保存的模式。这就会涉及到hidden元素了。
---------------------- Windows Phone 7手机开发、 .Net培训、期待与您交流! ----------------------详细请查看: http://net.itheima.com/