zoukankan      html  css  js  c++  java
  • FormCollection使用

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

    用法举例:

    以下是使用Razor语法的一个表单:
    [html] view plain copy
     
    1. @using (Html.BeginForm())  
    2. {  
    3.     @Html.TextBox("AAA")  
    4.     @Html.CheckBox("BBB")  
    5.     <input type="submit" name="submit" value="提交">  
    6. }  
    提交到后台ActionResult为:
    [csharp] view plain copy
     
    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:

    [csharp] view plain copy
     
    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就毫无用处。

  • 相关阅读:
    Java 图片处理——如何生成高清晰度而占有磁盘小的缩略图
    【设计模式】状态模式
    【设计模式】策略模式
    【设计模式】迭代器模式
    【设计模式】观察者模式
    【设计模式】享元模式
    【设计模式】桥接模式
    【设计模式】组合模式
    【设计模式】外观模式
    【设计模式】代理模式
  • 原文地址:https://www.cnblogs.com/dare/p/9173479.html
Copyright © 2011-2022 走看看