"this.SmartNavigation = true;"在页面基类里加了这1句代码...很轻松就实现了AJAX的效果,虽然原理不1样,但效果相同...一直都用,也没见大家所说的"用了后会有很多问题"的问题啊...

解决方案 »

  1.   

    只能说如果页面足够简单,用SmartNavigation足矣,例如datagrid的编辑功能,我修改一行的数据,却要把所有form里数据发送回去,然后服务器端处理后,再把全部页面发送回来,然后客户端ie还要再解析一边上次已经解析过的html,一般一个比较复杂的datagrid所形成viewstats轻易就会有100k以上的数据,如果客户是个拨号上网的,修改数据足够折腾死他。如果用ajax,我只要发送一行数据就行,而且如果修改成功甚至不用服务器端返回(除了发生异常)
    所谓的asp.net的整体工作方式,这只不过是微软提供一个cookie而已,类似于mfc程序,世上使用mfc开发的公司无数,可是完全遵循mfc 的doc/view模式有几家??甚至微软自己
      

  2.   

    this.SmartNavigation = true;  这是什么意思?
      

  3.   

    我查到的。
    SmartNavigation 属性已被否决。
    请改用 SetFocus 方法和 MaintainScrollPositionOnPostback 属性。
      

  4.   

    Microsoft Internet Explorer 5.5 或更高版本浏览器请求页时,智能导航将通过执行下面的功能提高用户对该页的操作能力: 消除导航导致的闪烁。从一页移动到另一页时保持滚动位置。保持导航之间的元素焦点。在浏览器的历史记录中只保留最后一页的状态。
      

  5.   

    有用。Ajax的目的是降低网络带宽使用,实际上网页是很多组件独立运行的。Ajax现在的问题是与asp.net控件机制不兼,只对基本上写静态页面或者完全用javascript写应用程序变动部分的人有用,对大量依赖asp.net机制的人无用。几乎现在所有写Ajax的人,往往是站在javascript的立场上,而不是站在web组件的立场上(框架写好了,当组件不断升级换代的时候框架不变),只能写出一些改变改变页面上文本条或者整个替代一个静态区域(实际上,可以在隐藏的iframe中请求一个aspx,然后这个aspx发出类似window.parent.abc.innerHtml=window.body.innerHtml的脚本代码,由这个页面把自己的内容顶给客户端需要的任意控件上)之类的小程序。微软的Atals也是那个小格局和思路,出发点似乎就不对。不过微软要改变思路还是完全承担得起的。
      

  6.   

    如果你的页面上整个EnableViewState=false,那么可以使用Ajax。你看那些Atlas演示,那个敢拿出两个服务器控件甚至ascx控件来演示他们Atals互动?装假都装不出来,根本做不到!
      

  7.   

    如果你的页面上整个EnableViewState=false,那么可以使用Ajax。你看那些Atlas演示,那个敢拿出两个服务器控件甚至ascx控件来演示他们Atals互动?装假都装不出来,根本做不到!
    ==============================================
    不是做不到,而是没必要了,所谓的服务器控件,就是服务器端自动的生成一些诸如__doPostBack() 语句,input type=submit, 的客户端控件,来发送客户端到服务器端的信息,有了xmlhttp,何必要绕一下呢,直接一个send即可
      

  8.   

    所谓的服务器控件,就是服务器端自动的生成一些诸如__doPostBack() 语句,input type=submit, 的客户端控件,来发送客户端到服务器端的信息
    ————————————————————————————————————————————
    开玩笑吧?!服务器控件是能够保持状态的,否则还要服务器控件干什么?最简单的,你在text中录入文字,它不至于在刷新之后丢掉问题,如果你在另一按钮事件中给textbox文字酸则不同的颜色,不论什么原因页面刷新之后文字的颜色状态也不会丢掉。
      

  9.   

    刷新之后丢掉问题  -->  刷新之后丢掉文字
    给textbox文字酸则不同的颜色  -->  给textbox文字选择不同的颜色
      

  10.   

    比如说你写一个用户登记个人求职信息的ascx控件,设计一个User业务类用来记录用户信息的个属性并进行操作(例如验证它的信誉度),这个ascx上有一个属性存储实例化的User对象。用户在编辑个人信息的时候,可能需要调用DataGrid填写自己最近三次工作经历(其中每一个Item会内嵌什么复杂控件我就不说了),调用DropdownList选择自己的求职岗位,系统根据岗位不同读取数据库生成不同的“最近招聘单位”名单供用户在上面打钩,并最终作为“我最感兴趣的公司”这一项。还有其它字段.....最为关键的是,这是一个(仅仅是)交互式控件,他不保存数据库或者xml的,它只返回User类型的一个属性。我奇怪,用asp.net的人如果不会做应用程序,何必用asp.net?用html+css+javascript就够了。
      

  11.   

    我找到了我以前放这里的一个小程序:
    http://community.csdn.net/Expert/topic/4516/4516253.xml?temp=.2055628demo页面上有一个订单编辑区、一个订单列表区。你可以看到,假设在列表中选择地2页,不论怎么编辑订单,列表刷新的时候都是仍然显示地2页(但是会显示被编辑记录的新值),总不能一编辑订单容易页面上的列表就又从第1页开始开始显示了吧!
      

  12.   

    总是让我拿出2天写的程序来说明asp.net是什么,我都觉得很惭愧,毕竟asp.net有很多方面需要展示,例如那个程序我就没有展示一个页面上有多个ascx的时候ascx可以各自独立地缓存。但是很多人确实可能是被web大潮以及与微软的缘分推到使用asp.net的境地上的,学了两三年,甚至成为国内asp.net的技术上的大牛,但是连asp.net是什么都没有搞清楚。
      

  13.   

    SmartNavigation不能降低网络带宽不过用AJAX是不是会降低开发效率,很怀疑
      

  14.   

    用ajax肯定比只用服务器控件要降低效率,但功能提高了不少,就是个取舍的问题,如何在合适的地方使用合适的技术?
      

  15.   

    不一样是肯定的,这个不用再争。问题是ajax是否真的是想象得那么好,是不是包治百病,是不是只是一种过渡性的技术,这些问题才是真正要思考的。
      

  16.   

    不一样是肯定的,这个不用再争。问题是ajax是否真的是想象得那么好,是不是包治百病,是不是只是一种过渡性的技术,这些问题才是真正要思考的。
    =====================================
    同意,关键看web应用如何发展
      

  17.   

    说实话,
    作为程序员还是比较期待ms的smartclient的,不管它有这样那样的缺点,至少可以给我们一个比较统一的标准,如果它能大行于天下的话
      

  18.   

    vs.net2005下好像有新的解决办法了.
      

  19.   

    @sp1234
    看看这个
    http://www.sunmast.com/Research/Ajax/AjaxWay.aspxhttp://www.sunmast.com/Research/Ajax/AjaxWay.aspx.cs.txt
    http://www.sunmast.com/Research/Ajax/AjaxWay.aspx.txt:-)
      

  20.   

    你可以看到我的AJAX框架是支持VIEWSTATE的,可以和普通ASP.NET控件混合使用
    开发方式和普通ASP.NET也没有什么不同
      

  21.   

    买几个CPU,打磨掉上面的商标换上自己的,也许能够使自己成为英雄。但是同样的市场考验在眼前——怎么量产?同样,自己创立的Ajax,如果你不公开源代码,不论怎么含沙射影地演示,都会令人怀疑。如果你曾经用它做过复杂界面的web应用程序,页面上有超过500个控件,这些控件任何一个改变如果不影响触发器控件则都不会造成其它控件与服务器通讯,但是一旦影响了哪些才会触发那些控件与服务器通讯,并且页面上任何控件与服务器单独通讯都会立刻修改并动态保持页面上的__ViewState等等asp.net用来控制状态的机制是最新、最准确的,这方是与asp.net基本兼容(暂且看这个最基本的、稍微高级一点的先不测试)。
      

  22.   

    可以看看MagixAjax的那个panel,那个是开源的,而且还不错~
      

  23.   

    看来看去看两个星星吵架,没意思,想用什么技术就用什么好了,这年头
    另外楼主,你那个会导致css失效的,建议不要轻易使用,有很多替代办法的,本质和ajax是两码事
      

  24.   

    在不得已的情况下,才会考虑使用 this.SmartNavigation = true
      

  25.   

    同样,自己创立的Ajax,如果你不公开源代码,不论怎么含沙射影地演示,都会令人怀疑。如果你曾经用它做过复杂界面的web应用程序,页面上有超过500个控件,这些控件任何一个改变如果不影响触发器控件则都不会造成其它控件与服务器通讯,但是一旦影响了哪些才会触发那些控件与服务器通讯,并且页面上任何控件与服务器单独通讯都会立刻修改并动态保持页面上的__ViewState等等asp.net用来控制状态的机制是最新、最准确的,这方是与asp.net基本兼容(暂且看这个最基本的、稍微高级一点的先不测试)。
    ================================================
    首先我不怀疑速马能够做出,因为他没必要这么做,而且这也不是太难于实现的技术,令外你所说“如果不影响其它控件则都不会”,你自己装个抓包软件看看就知道了
      

  26.   

    楼上,“因为他没必要这么做”是指什么?你到你认为我怀疑速马在做假的?不是的!CPU是可以拿别人的来改造的,肉毒素也是可以用来生产化妆品的,关键是你要公开(而不是含沙射影),让别人来根据技术内容评价其优缺点。
      

  27.   

    这是我做的测试,很简单,一个页面上有两个textbox :TextBox1 , TextBox2,
    两个Button ,Button1 , Button2 ,执行Button1时只读取 TextBox1的内容 ,Button2 只读取TextBox2 的内容
    用wsockexpert抓包后的内容如下
    点击button1
    POST /TestDrowDown/WebForm1.aspx HTTP/1.1
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
    Referer: http://localhost/TestDrowDown/WebForm1.aspx
    Accept-Language: zh-cn
    Content-Type: application/x-www-form-urlencoded
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)
    Host: localhost
    Content-Length: 95
    Connection: Keep-Alive
    Cache-Control: no-cache
    Cookie: ASP.NET_SessionId=1omxi3z4g123ne45pq2hi22h__VIEWSTATE=dDw4MTI3MTI0Ozs%2BNU5mHGjcStEXknvkvFtvy7ORIfY%3D&TextBox1=&TextBox2=&Button1=Button
    点击button2
    POST /TestDrowDown/WebForm1.aspx HTTP/1.1
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
    Referer: http://localhost/TestDrowDown/WebForm1.aspx
    Accept-Language: zh-cn
    Content-Type: application/x-www-form-urlencoded
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.1.4322)
    Host: localhost
    Content-Length: 95
    Connection: Keep-Alive
    Cache-Control: no-cache
    Cookie: ASP.NET_SessionId=1omxi3z4g123ne45pq2hi22h__VIEWSTATE=dDw4MTI3MTI0Ozs%2BNU5mHGjcStEXknvkvFtvy7ORIfY%3D&TextBox1=&TextBox2=&Button2=Button
      

  28.   

    在举一个例子,下面这个是我当年学了asp.net控件之后3、4个月时间开发的一个程序,现在看起来技术上过时了(有新的框架和工具需要移植),不过作为asp.net的例子还是可以的。你可以看看,一个应用程序需要怎样的Ajax,以及各种自创的Ajax方法能否像asp.net普通程序员一样拖入一个控件,写个myText.text=....的代码就能量产式地方便地开发。可惜演示服务器是用adsl联到办公室里的电脑上,比较慢:http://cmda618.gnway.net/w2cms 北京
    http://cqbd.gnway.net  兰州
      

  29.   

    写应用成序和写网页不同。传统的管理信息系统、erp等,因为业务繁杂,所以根本不是一个一个aspx去针对业务界面去开发,而是由aspx去解释业务对象(class或者数据库表)自动生成各种界面的。一个应用程序之后几种有限的界面,只有几个有限的界面程序去产生他们以及处理交互性操作。这时候,动态生成一些手工难以编写的东西是很方便的。问题是,一个界面上少则上百、多则上千的控件,都有Ajax的需求。
      

  30.   

    ASP.NET的WebControl模型的确可以很好的应付sp1234的情况。但是也就仅仅如此而已……
    全部禁用VIEWSTATE的网站不是没有,至于分页,我做的所有的项目都是SQL语句分页,断无DataGrid分页的道理,因为数据量庞大。至于用户控件,事实上由于ServerForm的各种限制,我根本就没用。因为实际上要做到某一个模块的复用,有比用户控件好更多的办法。AJAX可以实现的很多功能,是WebControl望尘莫及的,例如Gmail的自动完成,你告诉我用回发解决?而这种友善的用户界面,在管理信息系统里面根本就用不到?
      

  31.   

    讨论时就事论事嗯,千万不要变成人身攻击,也不要斗气 :-)对于我的那个框架(基类AjaxPage),并不是保留版权的,事实上这是我在《MSDN开发精选》上一篇文章的演示代码。你可以从CSDN MAG下载。
    我没有把这个框架继续做下去,只是验证了技术可行性之后就停止了,这是因为微软的Atlas出来之后,我的东西立即会失去价值,毕竟我没有对FCL的控制权,我目前的实现可以说是Crack了ASP.NET Runtime。可惜的是《MSDN开发精选》由于定位太高端的缘故,订阅甚少,2006年已经停刊了。所以我会把我的那篇文章重新发表在我的blog(blog.joycode.com/sunmast)里面。
      

  32.   

    所谓的服务器控件,就是服务器端自动的生成一些诸如__doPostBack() 语句,input type=submit, 的客户端控件,来发送客户端到服务器端的信息
    ————————————————————————————————————————————
    开玩笑吧?!服务器控件是能够保持状态的,否则还要服务器控件干什么?最简单的,你在text中录入文字,它不至于在刷新之后丢掉问题,如果你在另一按钮事件中给textbox文字酸则不同的颜色,不论什么原因页面刷新之后文字的颜色状态也不会丢掉。
    -----------------------------------------首先,我不是星星:),其次,我不是来吵架滴~呵呵。只谈谈个人观点:
    我同意一楼的观点:所谓服务器控件,就是一些经过加工的客户端控件。
    二楼说得也没错,服务器控件是可以保持状态的,但也是通过转换成客户端的代码,记录下来的。所以,二楼举的例子,不用任何服务器控件也可以实现。
    我从不开玩笑:)注:
    服务器控件指:WEBcontrol
    客户端控件指:HTMLcontrol
      

  33.   

    this.SmartNavigation = true;这个我有用过,在有些场合非常方便,但在比较复杂的应用时,会出现一些问题,例如分页时。而且问题比较难以解决。