这个问题太大了。
首先要谈提交方式(Post,Get),当然还有别的提交方式,这里就说这两种最常用的
Post提交方式
请求行
请求头
请求体(form表单提交的数据)
Get提交方式(无请求体)
请求行
请求头
成功控件的概念:
每个表单中的控件都应该有一个name属性和”当前值“, 在提交时,它们将以 name=value 的形式做为提交数据的一部分。
对于一些特殊情况,成功控件还有以下规定:
1. 控件不能是【禁用】状态,即指定【disabled="disabled"】。即:禁用的控件将不是成功控件。
2. 如果一个表单包含了多个提交按键,那么仅当用户点击的那个提交按钮才算是成功控件。
3. 对于checkbox控件来说,只有被用户勾选的才算是成功控件。
4. 对于radio button来说,只有被用户勾选的才算是成功控件。
5. 对于select控件来说,所有被选择的选项都做为成功控件,name由select控件提供。
6. 对于file上传文件控件来说,如果它包含了选择的文件,那么它将是一个成功控件。
表单的提交过程呢
提交过程,一句话就说完了。
只提交成功控件
Get提交没有提交体,Post提交有提交体
如果你要问asp.net Form的提交过程。还是可以扯扯的。
asp.net所有的Form都是提交给当前页(除非你自己重新设置,一般都不会设置)
asp.net的form的提交,会把成功控件全部封装成对象,这也就是为什么你在后台可以通过this访问到控件
asp.net的form提交,在iis端都是提交一次,创建一个page类,当请求结束后。page类自动销毁,这样可以防止iis端存储太多个page从而消耗完内存。但是由于重新创建page,那么怎么能让数据保存(http无状态协议),所以就有了viewstate视图状态,用来使两次(多次)提交生成的page看起来好像是一个(保存了数据,然后把数据填充到对应的控件上)
最后,我还是想说,这是一个很大的话题,一定要自己去写代码,然后问为什么,然后才可以理解清楚。光靠我在这里扯淡,你不会有深入的体会。(我这种资质的感觉不行,也许楼主天资聪颖,那不在我的讨论范围)