rt;
大虾们帮忙看看

解决方案 »

  1.   

    http://www.cnblogs.com/KenBlove/archive/2008/11/06/1328238.html再认识asp.net的postback机制:探索__doPostBack的来龙去脉 
    __doPostBack作为在asp.net中一个很重要的部分,有必要深入了解一下__doPostBack的来龙去脉的.其实,__doPostBack是一个很简单的JS function.代码如下: __doPostBack<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />function __doPostBack(eventTarget, eventArgument) {if (!theForm.onsubmit || (theForm.onsubmit() != false)) {theForm.__EVENTTARGET.value = eventTarget;theForm.__EVENTARGUMENT.value = eventArgument;theForm.submit();}}
     因为最终呈现给浏览器的内容都是html内容,采用asp.net技术也不能例外.要实现webcontrol的postback机制.只能在原来的submit上做文章.ms呈现给我们的,就是这种精巧的思维!我看到,asp.net现在页面上添加了两个hidden input,这两个input分别用来存放触发postback的control的ID和参数.这就是我们大部分人认识到的:__doPostBack(obj1,obj2)的第一个参数是控件ID,第二个参数是postback的参数.然后就可以在后台用Request.Form["__EVENTTARGET"]和Request.Form["__EVENTARGUMENT"]取得控件ID和参数.很简单就实现了看似很神奇,以为内部有什么高深的处理的过程!如此轻巧的实现了asp.net的postback机制,佩服佩服!只要我们看懂了上边的代码,对__doPostBack的使用就应该不是什么难事了.可以说__doPostBack就是这么简单的一回事.-_-||不过,另外要注意的就是asp.net的webcontrols中,Button和ImgButton是异类,它们不是利用__doPostBack来实现postback的.为什么这样,可能因为Button在html中本来就是有触发submit事件的功能吧.asp.net不过是要令原来html中一些不能触发submit的东西submit,才弄出了__doPostBack来实现.对于原来就能submit的Button,又何必多此一举呢.(仅个人理解,未经验证!)所以如果是Button的postback,在后台是不能用Request.Form["__EVENTTARGET"]和Request.Form["__EVENTARGUMENT"]取得控件ID和参数的.那么,怎么取呢?看代码: 取Button
    foreach (string str in Request.Form){  Control c = Page.FindControl(str);  if (c is Button)  {    control = c;    break;  }}
     如上写法可以在后台找到Button.为什么这样? 不知道,呵呵. 在Button的提交过程中,Button会将Button本身的ID作为Request.Form的一个Key,它的Value是Button的Text属性值,回传给服务器.所以可以在后台循环Form.Keys取到所提交的Button,以执行相应的函数.ImgButton也差不多,不同就在于,它不是用ImageButton的ID作为Request.Form的Key,它是用ImageButton的ID加上.x和.y作为Key,在Request.Form添加两上键值对,这两个键值应该是对应ImageButton的图片大小的,了解了这个规律后,我们仍然可以通过一定的方式得到是否是由ImageButton引发的PostBack.了解Postback机制对我们理解asp.net的事件触发过程有很大的帮助,好好利用__doPostBack更能灵活的使客户端和服务器端进行交互,获得更好的客户体验.
      

  2.   

    Asp.net中PostBack机制简单地说就是解决HTTP协议的无状态问题,自动回发提交的数据
      

  3.   

    试了jingshuaizh(大力水手)所说的,是这样的,在浏览器里查看源代码还有几个<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" />
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTYxMTc1NjI2MA9kFgICAw9kFgICAQ8QDxYGHg1EYXRhVGV4dEZpZWxkBQNrZXkeDkRhdGFWYWx1ZUZpZWxkBQV2YWx1ZR4LXyFEYXRhQm91bmRnZBAVAgnpq5jkuJbnlYwJ5p2o5Yeh6Zm2FQIIVGhlIEdvb2QIVGhlIEppYW4UKwMCZ2cWAWZkZNz93SlDMn/uF89Smnw9Wgs8iGNe" />
    <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBAK67LnzBgKd5I/lCgK8v/GmAwL97JzvBJIDNJXIU45ETB2PBkQSZS7LAQq0" />不知道是用来做什么的了。请指教。
      

  4.   

    记录页面状态。PostBack后把信息发回服务器,服务器再返回时又把信息带回来,所以方便多多,可以想想以前的asp想要实现状态保存就得自已写成串发回去,处理时再把串添上,
    现在.net替你完成了
      

  5.   


    大致可以:1. 实现了跟WinForm类似的事件驱动编程机制。你现在可以把代码放在各种控件的各个适当的事件处理过程中,MVP编程。微软自从1992、1993年之后就深入程序员心目中了,大大提高了使用微软开发平台的程序员的生产效率。当然,由于.net门槛实在太低,也有一些从外行开发平台临时转过来的asp.net开发人员明明放着事件编程不用而硬要把代码全都挤进Page的Load事件中,写出奇形怪状流程诡异别扭的程序。2. 实现了每一个控件中少则三五个多则上千个状态的自动化维系。
    这些都是降低web开发人员开发出好的交互式应用程序(而不是仅仅搞点漂亮的图片和样式)的技术门槛。不过asp.net太慢、用户体验不好。我建议学习微软的web应用开发者使用Silverlight2.0(或者3.0Beta)开发技术来实现页面上的内容展现,asp.net只是做点简单的(原来功能的不足5%的)工作就可以了。
      

  6.   

    未来几年, flash silverlight 应该会领导下潮流的