获取表单信息
开发工具与关键技术:
作者:熊琪
撰写时间:2019.04.13
当你想将数据库中的数据传输到页面表单中你可以通过查询,修改,新增和删除来进行数据的交互,当你有自定义的一些数据也可以硕成静态数据想与页面上交互,来获取表单元素有三种方式。
第一种直接通过FormCollection form来接收表单数据,用formAction来声明一个变量FormCollection form当你页面通过提交的连接找到方法时,而你接收的就是form表单里面带有属性值为name的所有标签都将返回,而这些Name的名称不能随便取,而要与控制器中方法里进行接收的匹配,目前获取到了文本,如果还需要知道文本中的值就得再次获取代码图:
form后面加一个中括号,里面写入的是你需要获取的列名为txtName的一个数组,该地方的名称要与form表单中name值要相同。通过断点可以在form上看到返回的值的信息,代码图片:
以上是第一种的获取表单方式,这里也牵扯到了两种不同提交方法,一种是手动提交,另一种是手动提交。在自动提交时提交按钮本身就存在 submit属性除了这个表单上还会存在action和meth属性。手动提交就有多种方法,第一,在提交按钮中有type=”button”,而form表单上还有属性action和meth时来提交,另外一种则是在页面上没有action 和meth属性,则要在JS中用attr来操控属性,attr是操控对象属性的。代码写法如图:
第二种接收form表单的方法,声明字符串来接收,字符串没办法来接收具体的文本,不是关键字所以不会自动的去匹配有一种提交方法则是将按钮的类型换成submit 。
代码图:
然后在视图上script标签中写入提交方法,代码写法如下:
$("#btnSubmit").click(function () {
$("#myform").attr({ "method": "post", "action": "/jQueryAjax/getAction" });
});
btnSubmit是之前button按钮中的ID用处就是便于选中,这是在form表单没有action与method属性的情况下,输入文本值后点击提交实现效果,如图:
获取方法不同所对应的提交方式也不相同。第二种方法是,要接收多少参数就声明多少变量来接收,一般第二种是传输的参数较少时来使用,而第三种方法与第一种很相似也是直接获取到文本值,写法:
public ActionResult formAction1()
{
string name = Request.Form["txtName"];
string sex = Request.Form["cboSex"];
string address = Request.Form["txtAddress"];
return Content(name + "&" + sex + "&" + address);
}
也是同样的中括号中的名称要与页面上文本的名称一样,否则获取不到文本值,Request(请求)Form表单中name(名称)为txtName的值,第三种方法与第一种相似都是直接指定标签来获取,Content(string)返回字符。
提交方式也是一样手动提交和自动提交,这里解释一下post提交与get提交有什么区(来源W3School). 与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。然而,在以下情况中,请使用 POST 请求:无法使用缓存文件(更新服务器上的文件或数据库)向服务器发送大量数据(POST 没有数据量限制)发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠。 不同点:
1.Get方法是用来向服务器上获取数据,而Post是用来向服务器上传递修改数据。
2. Get将表单里的数据添加到action所指向的URL后面,并且两者之间使用”?”连接,而各个变量之间使用”&”连接; Post是将表单中的数据放在form的数据体中,按照变量和值对象的方式,传递到所指向的action.
3.Get是不安全的,因为在传输过程中,数据被放在请求的Url中,这样,用户可以直接在浏览器上看到提交的数据,一些系统内部信息也一同显示在用户面前。
Post的所有操作对用户来说都是不可见的。
4、Get传输的数据量小,主要是受限与于Url长度限制,其中IE浏览器对URL的最大限度为2083个字符。而post可以的传输大量的数据,所以在上传文件和大数据量时使用post。
5、Form提交默认为Get方法提交。
6、Get方式获取数据后,刷新不会有负面的影响,因为它只是获取数据,而Post方法刷洗页面
重复提交可能会产生不良的后果。