MVC 中Form提交的数据是根据控件中的 name来区分的,当同一个name被多个控件使用时,这几个控件的值将会以逗号的形式出现例如:
HTML
<td>
<input type="text" name="FirstName" value="wang" />
</td>
<td>
<input type="text" name="FirstName" value="chong"/>
</td>
<td>
提交的数据就是
第一种: Request.Form["{name}"] 与 FormCollection["{name}"]
[HttpPost]
public ActionResult Index(FormCollection form)
{}
public ActionResult Index(FormCollection form)
{
string name = Request.Form["FristName"];
}
这两种方法都是直接从post的表单中获取值。
第三种:在控制器中指定public ActionResult Index(string {name1},string {name2})
public ActionResult Index(string FristName,string LastName)
{}
这种方法实际上也是从post表单中获取,但是不同的地方在于,会对数据进行自动校验,省去了数据转换的麻烦。
第四种:在控制器中指定public ActionResult Index({自定义复杂类型} list)
[HttpPost]
public ActionResult Index(List<Models.PersonModel> list)
{
return View(list);
}
这种是接受复杂类型的,其实实际上也是从post表单中获取。
PersonModel.cs
public class PersonModel
{
[DisplayName("名")]
/// <summary>
/// 名
/// </summary>
public string FristName { get; set; }
[DisplayName("姓")]
/// <summary>
/// 姓
/// </summary>
public string LastName { get; set; }
[DisplayName("偏光度")]
/// <summary>
/// 偏光度
/// </summary>
public string[] DegreeOfPolarization{get;set;}
}
HTML代码
<td>
<input type="text" name="list[0].FristName" value="wang" />
<input type="text" name="list[0].LastName" value="wang" />
<input type="text" name="list[0].DegreeOfPolarization[0]" value="4.4" />
<input type="text" name="list[0].DegreeOfPolarization[1]" value="4.5" />
</td>
<td>
<input type="text" name="list[1].FristName" value="chong" />
<input type="text" name="list[1].LastName" value="wang" />
<input type="text" name="list[1].DegreeOfPolarization[0]" value="4.1" />
<input type="text" name="list[1].DegreeOfPolarization[1]" value="4.2" />
</td>