今天在公司做项目的时候,用到了表单,虽然经常用表单提交,但是没有具体了解表单的结构和表单提交的具体的方式。今天借此机会,深入了解一下表单的知识。
一、什么是表单?
表单:通俗的讲就是代表格的单子;主要的功能是负责数据采集。
二、表单的组成
通常一个表单有三个部分组成:
(1)、表单标签:包含了处理表单数据所用的CGI[Common Gateway Interface](公共网关接口)程序的URL以及数据提交到服务器的方法。
(2)、表单域:主要包含表单控件如:文本框、密码框、隐藏域、下拉列表框、单选框、复选框以及文件上传框。
(3)、表单按钮:包括提交、复位、一般按钮;用户将数据传送到服务器上的CGI脚本或取消输入。
[1]、表单标签<form></form>
功能:用于申明表单。定义采集数据的范围,也就是<form></form>里面的包含的数据提交到服务器或电子邮件中。
语法:<form action="URL" method="GET|POST" enctype="MIME" target="...."></form>
属性解释如下:
action=url指定地址来处理表单的格式。
method=GET|POST 明确指明提交表单的HTTP方法
POST方法在表单的主干包含名称/值,无需包含于action特性的URL中
GET方法把名称/值对加在action的URL后面,并且把新的URL送至服务器
enctype=cdata指明用来把表单提交给服务器时的互联网媒体形式
target="..."指定提交的结果文档显示的位置:
_blank :在一个新的,无名浏览器窗口调入指定的文档
_self:在指向这个目标的无素的相同的框架中调入文档
_parent:把文档调入当前框架的直接的父frameset框中
_top:把文档调入原来的最顶部的浏览器窗口中
当表单向服务器提交值之后,服务器通过Request对象获取表单,前提是表单域中需要包含name字段。
表单提交方式为post:则使用Request.Form("表单元素名称[name]")fangwen
表单提交方式为get:则使用Request.QueryString("表单元素名称[name]")
注:以上两种提交方式都可以简写成Request["表单元素名称"],QueryString优先
注:在同一表单中可能包括共用同一名称的多个输入的字段,如果你使用Request.For,或Request.QueryString集合来访问一个字段名称,将包含所有用逗号(,)隔开的给定的字段同名字段的所有值返回一个字符串。
如果要获取同一name多个输入的值组成的字符串中,要想获得其中一个name对应某个输入的值可以用getValues,其提供对每个值的访问,然后使用数字元素。具体的代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 <form id="form1" action="Default.aspx" runat="server" method="post">
2 <!--同一name多个输入-->
3 <input type="text" name="text" /><br/>
4 <input type="text" name="text" /><br/>
5 <select name="select">
6 <option value="1">1</option>
7 <option value="2">2</option>
8 </select><br/>
9 <input type="radio" name="radio" value="radio1"/>
10 <input type="radio" name="radio" value="radio2"/>
11 <br/>
12 <input type="submit" value="表单提交"/>
13
14 </form>
.cs文件如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 if (IsPostBack)
2 {
3 Response.Write(Request.Form["text"]+"<br/>");
4 Response.Write(Request.Form["select"] + "<br/>");
5 Response.Write(Request.Form["radio"] + "<br/>");
6 Response.Write(Request.Form.GetValues("text")[0]);
7 }
通常情况下我们就完成了表单的提交和对表单的取值,在通常的项目中往往需要对表单验证,比如用户登录,如果用户登录错误,表单里面的值就会消失.这是因为asp.net的状态管理机制。
我们需要保存input 文本的值需要做以下的内容:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 <form id="form1" action="Default.aspx" runat="server" method="post">
2 <!--同一name多个输入-->
3 <input type="text" name="text" value="<%=Request.Form.GetValues("text")[0] %>" /><br/>
4 <input type="text" name="text" value="<%=Request.Form.GetValues("text")[1] %>"/><br/>
5 <select name="select">
6 <option value="1">1</option>
7 <option value="2">2</option>
8 </select><br/>
9 <input type="radio" name="radio" value="radio1"/>
10 <input type="radio" name="radio" value="radio2"/>
11 <br/>
12 <input type="submit" value="表单提交"/>
13
14 </form>