FormCollection用来在controller中获取页面表单元素的数据。它是表单元素的集合,包括<input type="submit" />元素。

用法举例:

以下是使用Razor语法的一个表单:
  1. @using (Html.BeginForm())
  2. {
  3. @Html.TextBox("AAA")
  4. @Html.CheckBox("BBB")
  5. <input type="submit" name="submit" value="提交">
  6. }

提交到后台ActionResult为:

  1. [HttpPost]
  2. public ActionResult Index(FormCollection form)
  3. {
  4. string a = form["AAA"];
  5. string b = form["BBB"];
  6. string c = form["submit"];
  7. return View();
  8. }

此时可以得到a="",b="false",c="提交"。要注意的是使用form["AAA"]得到的都是string,需要进行类型转换。

FormCollection和Request.Form的区别:

推荐大家使用FormCollection,原因有以下两点:

1.前者便于单元测试:

对于Action进行单元测试时,使用FormCollection作为输入参数,比Request.Form简单,书写如下代码即可模拟一个FormCollection:

  1. var form = new FormCollection();
  2. form.Add("fieldName","fieldValue");

2.前者可支持MVC扩展:

Asp.net MVC在进行模型绑定时,会将用户输入绑定到FormCollection中,默认情况下,FormCollection中的内容与Request.Form一致,但是当我们自定义ModelBinder时,会影响FormCollection的取值,而Request.Form不会影响。这样如果我们在自定义ModelBinder时依旧使用Request.Form,自定义ModelBinder就毫无用处。

最新文章

  1. Android手机编程初学遇到的问题及解决方法
  2. div在浏览器窗口中居中
  3. Odoo 9 PDF不显示中文字体
  4. 001_kafka起步
  5. Scrum团队成立,阅读《构建之法》第6~7章,并参考以下链接,发布读后感、提出问题、并简要说明你对Scrum的理解
  6. iOS7 iOS8 毛玻璃效果的分别实现
  7. python,django,mysql版本号查询
  8. Java设计模式之《调停者模式》及应用场景
  9. 史上最强Spring mvc入门
  10. layUI框架中文件上传前后端交互及遇到的相关问题
  11. Linux系统——MHA-Atlas-MySQL高可用集群
  12. Mybatis之collection嵌套查询mapper文件写法
  13. dir 命令手册
  14. TCC细读 - 3 恢复流程
  15. ABP 异常处理 第四篇
  16. JS_各种排序方法
  17. Centos7-安装Gradle4.10
  18. conductor APIs
  19. EFCore
  20. centos7下git的安装和配置

热门文章

  1. Nuget下载 MySql.Data 连接MySql数据库
  2. 强制执行父类下的__init__
  3. Alt+~,Alt+Tab
  4. 【转载】熟练利用google hacking来辅助我们快速渗透
  5. java模拟from表单提交,上传图片
  6. 图像人脸检测+人眼检测 (opencv + c++)
  7. 1264: 祈雨(Java)
  8. Redis主从及Cluster区别及注意事项
  9. preg_replace
  10. (二)XML基础(2)