asp.net中使用jQuery的ajax--同时维持视图状态

来源:互联网 发布:人力资源管理知乎 编辑:程序博客网 时间:2024/06/18 09:46

首先,应该承认asp.net机制和携带的标准web服务器控件确实很强大,因为他为程序员做了很多工作,那就降低了程序员的素质和要求,web服务器控件能够在客户端请求和应答中保持原有状态,这是web服务器控件自身的能力。

web服务器控件不能滥用了,任何好的东西用多了就坏了,或者说没有用到他的长处,反而会因为他成为系统的累赘。asp.net首先是web应用程序,browser和server的交互,大体上是和jsp、php是同类,很多地方完全可以使用纯粹的html来替代,这个要看具体环境了。

如果对页面布局和美化要求不是很高的话,asp.net程序员是可以搞定很多事情,他不用学习很多的html、css、javascript还有jQuery很深的东西,知道皮毛或许就可以工作了。

同时在asp.net之外,做web系统最流行的可能就是jQuery框架,他在浏览器表示上的功夫确实了得,必须承认他的过人之处。一个asp.net程序员也可以使用jQuery框架,但是在有些地方(如ajax)就和asp.net框架本身不是很兼容。因为在页面上肯定会有web服务器控件(如果一个页面没有一个web服务器控件,其实asp.net也就失去了意义),那么就有回发,即使你使用jQuery的ajax实现页面看起来很流畅,只要一个web服务器控件的回发就使ajax带来的效果丢失,多让人失望呀!

需要知道的是自asp.net页面第一次展现后,后来的回发和视图状态都是靠表单来维持的。比如,你查询 通过jQuery的ajax获取到了一堆html代码展示在页面上,一旦回发这些数据就会丢失,因为视图只在表单中维持,你要想维持ajax带来的效果,在回发是最好把ajax获取到的html代码放在asp:HiddenField隐藏字段里,等回发到服务器端(注意取消ValidateRequest,使其false),再把这些代码传回来 展示出来。当然如果内容很多的话,肯定会带来性能的损失。

题外话,asp.net的GridView控件在展示数据上的优点是显而易见的,但是在美观上和灵活度上欠缺的很多。一般使用它时会禁用该控件的视图状态,但是该控件本身也能维持自身状态,太牛了。