Asp.net MVC中提交集合对象,实现Model绑定(转载)
2013-11-17 13:29
751 查看
Asp.net MVC中的Model自动绑定功能,方便了我们对于request中的数据的处理, 从客户端的请求数据,自动地以Action方法参数的形式呈现。有时候我们的Action方法中想要接收数组类型的参数,如何写表单,使得Model能够自动绑定到数组参数上呢?
看下面的代码,Action方法UpdateStudents就需要IEnumerable<Student>类型的参数,用来批量更新Student数据。
上面是一个非常典型的应用场景, 如何为表单中的field命名,能够使得提交表单的时候,model bind能够自动创建好IEnumerable<Student>类型的students呢?
下面就是在批量更新场景下的表单View代码
再来看看生成html的表单的实际效果
可以看到对于集合数据的绑定,MVC中有自己的定义规则,所有的表单项都是[number].Field的形式。
上面是更新的例子,如果是批量添加数据,不能使用HtmlHelper,只要是提交的表单项按照这个规则来命名,MVC也能够自动绑定成集合对象。
看下面的代码,Action方法UpdateStudents就需要IEnumerable<Student>类型的参数,用来批量更新Student数据。
[HttpPost] public ActionResult UpdateStudents(IEnumerable<Student> students) { //....save }
上面是一个非常典型的应用场景, 如何为表单中的field命名,能够使得提交表单的时候,model bind能够自动创建好IEnumerable<Student>类型的students呢?
下面就是在批量更新场景下的表单View代码
@using(Html.BeginForm()) { for (var i = 0; i < Model.Count(); i++ ) { <div style="border-bottom: 1px solid red;"> <p>id:@Html.TextBoxFor(m => m[i].Id)</p> <p>name:@Html.TextBoxFor(m => m[i].Name)</p> <p>age:@Html.TextBoxFor(m => m[i].Age)</p> </div> } <input type ="submit"/> }
再来看看生成html的表单的实际效果
<form action="/home/updatestudents" method="post"> <div style="border-bottom: 1px solid red;"> <p>id:<input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." name="[0].Id" type="text" value="1" /></p> <p>name:<input name="[0].Name" type="text" value="Andrew Peters" /></p> <p>age:<input data-val="true" data-val-number="The field Age must be a number." data-val-required="The Age field is required." name="[0].Age" type="text" value="18" /></p> </div> <div style="border-bottom: 1px solid red;"> <p>id:<input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." name="[1].Id" type="text" value="2" /></p> <p>name:<input name="[1].Name" type="text" value="Brice Lambson" /></p> <p>age:<input data-val="true" data-val-number="The field Age must be a number." data-val-required="The Age field is required." name="[1].Age" type="text" value="29" /></p> </div> <div style="border-bottom: 1px solid red;"> <p>id:<input data-val="true" data-val-number="The field Id must be a number." data-val-required="The Id field is required." name="[2].Id" type="text" value="3" /></p> <p>name:<input name="[2].Name" type="text" value="Rowan Miller" /></p> <p>age:<input data-val="true" data-val-number="The field Age must be a number." data-val-required="The Age field is required." name="[2].Age" type="text" value="56" /></p> </div> <input type ="submit"/> </form>
可以看到对于集合数据的绑定,MVC中有自己的定义规则,所有的表单项都是[number].Field的形式。
上面是更新的例子,如果是批量添加数据,不能使用HtmlHelper,只要是提交的表单项按照这个规则来命名,MVC也能够自动绑定成集合对象。
相关文章推荐
- Asp.net MVC中提交集合对象,实现Model绑定
- Asp.net MVC中提交集合对象,实现Model绑定
- Asp.net MVC中提交集合对象,实现Model绑定
- 如何应用Asp.Net Mvc内建功能(DefaultModelBinder)实现简单类型、复杂类型、集合类型,以及字典类型的自动绑定
- ASP.NET MVC之表单集合数据自动绑定到对象属性(集合)中
- 通过实例模拟ASP.NET MVC的Model绑定的机制:集合+字典
- 如何在ASP.NET MVC中实现提交若干个某模型的数据(某Model的List或ICollection,大小不定)
- ASP.NET MVC之表单集合数据自动绑定到对象属性(集合)中
- asp.net mvc源码分析-DefaultModelBinder 集合绑定
- 通过实例模拟ASP.NET MVC的Model绑定的机制:集合+字典
- ASP.NET MVC中默认Model Binder绑定Action参数为List、Dictionary等集合的实例
- asp.net mvc源码分析-DefaultModelBinder 集合绑定
- MVC学习笔记之:ASP.NET MVC的客户端验证-jQuery.validate验证集合Model验证中的实现
- 在ASP.NET MVC中使用Knockout实践02,组合View Model成员、Select绑定、通过构造器创建View Model,扩展View Model方法
- 学习: ASP.NET MVC开发入门-UI实现根据查询条件返回Model层的查询结果
- Asp.Net Mvc表单提交之List集合
- 使用ModelBinder绑定IPrincipal (User)简化ASP.NET MVC单元测试
- ASP.NET MVC Model绑定(一)
- asp.net mvc源码分析-DefaultModelBinder 自定义的普通数据类型的绑定和验证
- ASP.NET MVC的客户端验证:jQuery验证在Model验证中的实现