传统的ASP.NET使用控件+事件的方式进行页面数据的处理。
在asp.net webform中,有一个叫做viewState的隐藏域,这个域中存放了控件的控件状态。
当向服务器发起请求的时候,服务器内部处理时正常情况下,只接受,你所传递的参数,而控件本身的状态(它本身所具备的值)是不会被记录在服务器中一起返回回来。
但在asp.net webform,每一个页面点击“查看源代码”时,都会发现:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title> </title></head> <body> <form method="post" action="./1.Default.aspx" id="form1"> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE5NjMzNzg4NjhkZNHGzRMCdnoeo/ovkey+cnGHulwBKc7QSObjXpJXQSF0" /> </div> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="34485515" /> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEdAAQrWBisWRmsreayjSPRDQ1WaO7wr2bGy5Svy1k6RcgCWXLf/AkcFeW8F92naHLDqr2H2DKswHkHuPcm2TnMIabbL5mkk+fTzvu13EOyAGj6z32edD+OHuaa23aigf450wc=" /> </div> <div> <input name="txtNum1" type="text" id="txtNum1" /> <br /> <input type="submit" name="btnCopy" value="Copy" id="btnCopy" /><br /> <input name="txtNum2" type="text" id="txtNum2" /> <br /> </div> </form> </body> </html>
源码中多出了许多的被隐藏掉的域,而这个域(ViewState)正是控件发起请求前控件中所具备的值得以保留的原因。
带来方便的同时,也产生了很多问题。