VIEWSTATE是个好东西,是asp.net的一大创举,给web开发带来了极大的便利,然后这种便利是一种双刃剑,尤其是在前台页面,大多数前台页面都是用来展示列表数据,和用户交互的地方现在大都采用ajax代替了,在这种情况下VIEWSTATE已经没有什么用武之地了。因此禁用VIEWSTATE是必须的。

一般禁用VIEWSTATE的方法就是在页面顶端的page指令中加上EnableViewState="false",但是很不幸页面中还是用少量的顽固分子

如何将这个剩余的VIEWSTATE清理干净呢,如果稍微留心一下就会注意到当我们新建一个aspx页面的时候,页面的html代码中默认是有一个runat="server" 的form,恩,现在就要考虑一下form的作用,他是用来提交表单的,但是大多数前台页面更本不用提交一个表单,既是需要的地方,在ajax盛行的年代,我们也早就不用原始的把一个页面post到服务器端了。那么按这样说,这个form根本就没有用的。那好,现在我们就把这个form去掉,这样再来看我们页面的html代码,你会惊奇的发现,页面很干净,没有了form,那“障眼”的VIEWSTATE也不见了(既是你没有在顶端的page指令中加上EnableViewState="false")!

删除了带runat="server" 的form之后,在使用控件的时候会有很多限制,比如这是如果你放一个TextBox到页面,然后运行页面,这是页面会报错:“类型“TextBox”的控件“TextBox1”必须放在具有 runat=server 的窗体标记内。” 除了TextBox,还有哪些控件也是必须放在runat=server的窗体内呢?如果实验几个控件,你就会发现,凡是能够被表单(form)提交的(post)html元素的控件都是必须放在具有 runat=server 的窗体标记内。我们知道asp.net控件最终还是要生成html元素的,不管再复杂的控件。比如一个TextBox控件在页面中生成的就是<input  type="text"/>的html元素,而这个输入框是可以被form提交的。数据控件中只有RepeaterListViewDataList  可以没有带runat="server" 的form,当然在三个控件的模板里面一样不能出现类似TextBox的控件。前台展示列表的话Repeater足矣!

这样当你打开博客园.NET频道沪江网店 查看它们的HTML源码的时候就不会惊讶为什么找不到VIEWSTATE呢?难道是生成了静态页面,等等。。。

让VIEWSTATE从页面中完全消失(小技巧)的更多相关文章

  1. ACM 做题过程中的一些小技巧。

    ACM做题过程中的一些小技巧. 1.一般用C语言节约空间,要用C++库函数或STL时才用C++; cout.cin和printf.scanf最好不要混用. 2.有时候int型不够用,可以用long l ...

  2. C语言中的调试小技巧

    C语言中的调试小技巧 经常看到有人介绍一些IDE或者像gdb这样的调试器的很高级的调试功能,也听人说过有些牛人做工程的时候就用printf来调试,不用特殊的调试器.特别是在代码经过编译器一些比较复杂的 ...

  3. jquery获取json对象中的key小技巧

    jquery获取json对象中的key小技巧 比如有一个json var json = {"name" : "Tom", "age" : 1 ...

  4. ES6中常用的小技巧,用了事半功倍哦

    ES6中常用的小技巧,如果能在实际项目中能使用到,必定事半功倍: 1. 强制要求参数 ES6提供了默认参数值机制,允许你为参数设置默认值,防止在函数被调用时没有传入这些参数. 在下面的例子中,我们写了 ...

  5. C#中使用swagger小技巧

    C#中使用swagger小技巧 swaggerUI显示的接口内容主要用于开发阶段便于与前端联调,不适合发布到对外的站点. 有以下两种方式,让接口不显示在SwaggerUI中 1.使用属性 [ApiEx ...

  6. asp.net mvc route 中新发现的小技巧

    在发现这个小技巧之前,我经常被某些问题困扰,我们以博客园为例 1:是分类名称 2:是分类url 3:点击分类,进入的页面,要显示分类的名称 4:点击分类,进入的页面,要用分类相关参数 在日常web的开 ...

  7. RS开发中的一些小技巧[不定期更新]

    从9月份一直忙到了现在,项目整体的改版工作也完成了十有八九了,有些事情只有你自己真正的做了,你才能明白:哦,原来还可以这个样子,这样做真的好了很多呢,接下来我就分享一些最近遇到的RS开发的一些小技巧, ...

  8. CSS中的一下小技巧1之CSS3三角形运用

    使用CSS3实现三角形: 在前端页面中有很多时候会遇到需要三角形图案的时候,以前不知道可以用CSS3实现三角形的时候,一般都是叫UI把三角形图案切出来. 后来知道原来可以用CSS3实现三角形,可是用过 ...

  9. javascrip中的confirm小技巧

    jsp页面中的一个标签: <a href="javascript:void(0)" onclick="confirmDelete('<%=request.ge ...

随机推荐

  1. js删除提醒

    2014年7月3日 16:28:03 html <input type="submit" name="submit" value="删除&quo ...

  2. 【JAVA、C++】 LeetCode 008 String to Integer (atoi)

    Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...

  3. Enum:Smallest Difference(POJ 2718)

    最小的差别 题目大意:输入一串数字,问你数字的组合方式,你可以随意用这些数字组合(无重复)来组合成一些整数(第一位不能为0),然后问你组合出来的整数的差最小是多少? 这一题可以用枚举的方法去做,这里我 ...

  4. mybatis的jdbcType类型

    在用mybatis的时候,如果传过来的参数有可能为空,那么就要指定jdbcType是什么了,否则会有异常,jdbcType有以下几种: BIT         FLOAT      CHAR      ...

  5. 【python】lxml-The E-factory

    来自:http://lxml.de/tutorial.html lxml中的E-factory可以用个简单快速的生成XML和HTML >>> from lxml.builder im ...

  6. Linux下循环、选择、顺序操作

    1.Shell脚本数组操作小结 http://www.jb51.net/article/52382.htm Linux Shell在编程方面比Windows批处理强大很多,无论是在循环.运算. bas ...

  7. 如何使用Linux的Crontab定时执行PHP脚本的方法

    我们的PHP程序有时候需要定时执行,我们可以使用ignore_user_abort函数或是在页面放置js让用户帮我们实现.但这两种方法都不太可靠,不稳定.我们可以借助Linux的Crontab工具来稳 ...

  8. 创建一个ASP.NET MVC OutputCache ActionFilterAttribute

    在每一个web应用程序中, 有的情况下,你想在一段时间内缓存一个具体的页面HTML输出,因为相关的数据和处理并不是总是变化.这种缓存的响应是储存在服务器的内存中.因为没有必要的额外处理,它提供了非常快 ...

  9. Android 开发 --Unable to resolve target 'android-19'

    Android 开发 --Unable to resolve target 'android-19' http://blog.csdn.net/love_javc_you/article/detail ...

  10. python file.tell() 在windows下需要注意的地方

    顺便记一下,'rba'模式是非法的...