当前位置:编程学习 > C#/ASP.NET >>

关于ASP.NET回发机制的疑问

在ASP.NET的回发中,会将TextBox的旧值回发到服务器吗?
譬如,我一个文本框有一个textchange事件,它的初始值是aaaa,我重新输入值为bbbb,引发textchange回发时,我通过HTTP WATCH看到回发的是bbbb,我想问的是在这里aaaa不用回发到服务器吗?那它怎么比较textbox的值是否发生变化从而引发textchange事件呢?难道是在客户端判断是否发生变化从而决定是否回发事件?

总之,我想问的是
1、textchange事件是在客户端判断是否发生变化引起回发?还是回发到服务器端再判断是否引发textchange事件?
2、旧值应该是通过viewstate传回到服务器端吧?那新值是怎么传回去的呢?新值组成一个字符串textbox1=bbbb&textbox2=ccc来返回给服务器的吗? --------------------编程问答-------------------- 好好学习 天天上线 --------------------编程问答-------------------- 我试验了一下:
 aspx:
<asp:TextBox runat="server" ID="txtTest" OnTextChanged="changed" AutoPostBack="true"></asp:TextBox>
c#:
        protected void changed(object sender, EventArgs e)
        {
            Response.Write(((TextBox)sender).Text);
        }
有autoPostBack属性html:
        <input name="txtTest" type="text" value="ddd" onchange="javascript:setTimeout('__doPostBack(\'txtTest\',\'\')', 0)" onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;" id="txtTest" />

无autoPostBack属性的html是:
<input name="txtTest" type="text" id="txtTest" />

而且我在有aupostBack属性时候,response.write()出来的是新值。
根据这些,我的回答是:
问题1:textbox是在客户端判断文本有没有发生变化,有才回传,然后后台触发TextChanged事件。后台收到的是新值,我不知道旧值是否真的像你说的有http传送了,但textChange处理函数中的eventArgs并没有 
oldValue一项,估计是无法取到旧值。
问题2:后台应该只是获取了新值,是通过viewstate来传递,但应该没有处理旧值。
个人猜测 --------------------编程问答-------------------- 2楼分析的不错! 未知的还要花时间 研究! --------------------编程问答-------------------- 如果你想测试回发的ViewState保存值可以用lable测试,你就会明白。
TextBox不好测试,即使你关闭ViewState他仍然能保存值。只是Html文本框自带的属性。 --------------------编程问答-------------------- 它的初始值是aaaa,相当于类变量的初始值。你可以在preInit中测试.它的值 Text是bbbb,是旧值。
重新输入值为bbbb,是通过ViewState传给服务器,在pageload中重新再赋给控件,这个时候你查看控件
的Text是bbbb. --------------------编程问答-------------------- 1、文本框有一个textchange事件其实是分成了两个部分,一个是js的前台事件,这个用js的方式来判断是不是发生了change。

另一个部分是在后台的事件。

2、原来的aaaa是存放在了ViewState里面,通过ViewState里面保存的和前提提交过来的做判断。 --------------------编程问答-------------------- 我是来学习的 --------------------编程问答-------------------- 不错,学习下
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,