Form(表单)对于每个 WEB 开发人员来说,应该是再熟悉不过的东西了,可它却是页面与WEB 服务器交互过程中最重要的信息来源。虽然 Asp.net WebForms 框架为了帮助我们简化开发工作,做了很完美的封装,让我们只需要简单地使用服务端控件就可以直接操作那些 HTML 表单元素了。但我认为了解一些基础的东西,可以使我们不必束缚在 WebForms 框架上,以及遇到一些奇怪问题时,可以更从容地解决它们。 今天,我将和大家来聊聊表单,这个简单又基础的东西。我将站在 HTML 和单纯的 Asp.net框架的角度来解释它们的工作方式,因此,本文不演示 WebForms 服务器控件的相关内容。 回到顶部 简单的表单,简单的处理方式 好了,让我们进入今天的主题,看看下面这个简单的 HTML 表单。
在这个 HTML 表单中,我定义了二个文本输入框,一个提交按钮,表单将提交到Handler1.ashx 中处理,且以 POST 的方式。 注意哦,如果我们想让纯静态页面也能向服务器提交数据,就可以采用这样方式来处理:将action 属性指向一个服务器能处理的地址。 说明:当我们使用 WebForms 的服务器表单控件时,一般都会提交到页面自身来处理(action属性指向当前页面),这样可以方便地使用按钮事件以及从服务器控件访问从浏览器提交的控件输入结果。 如果在 URL 重写时,希望能在页面回传时保持URL 不变,即:action 为重写后的 URL,那么可以 Page 类中执行以下调用: Form.Action = Request.RawUrl; // 受以下版本支持:3.5 SP1、3.0 SP1、2.0 SP1 好了,我们再回到前面那个 HTML 表单,看一下如果用户点击了“提交”按钮,浏览器是如何把表单的内容发出的。在此,我们需要 Fiddler 工具的协助,请在提交表单前启动好Fiddler。我将这个表单的提交请求过程做了如下截图。 上图是将要提交的表单的输入情况,下图是用Fiddler 看到的浏览器发出的请求内容。 在这张图片中,我们可以看到浏览器确实将请求发给了我前面在 action 中指定的地址,且以 POST 形式发出的。表单的二个控件的输入值放在请求体中,且做了【编码】处理,编码...