Asp.net MVC中提交集合对象,实现Model绑定

简介:

Asp.net MVC中的Model自动绑定功能,方便了我们对于request中的数据的处理, 从客户端的请求数据,自动地以Action方法参数的形式呈现。有时候我们的Action方法中想要接收数组类型的参数,如何写表单,使得Model能够自动绑定到数组参数上呢?

看下面的代码,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也能够自动绑定成集合对象。

关于Model Bidning,这里还有一篇文章

Asp.net MVC使用Model Binding解除Session, Cookie等依赖



本文转自JustRun博客园博客,原文链接:http://www.cnblogs.com/JustRun1983/p/3427563.html,如需转载请自行联系原作者

目录
相关文章
|
29天前
|
前端开发 JavaScript
MVC中简单数据模型(M): Model类
MVC中简单数据模型(M): Model类
|
2月前
|
开发框架 JSON 前端开发
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
利用查询条件对象,在Asp.net Web API中实现对业务数据的分页查询处理
|
23天前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
29 0
|
23天前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
27天前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
76 0
|
3月前
|
开发框架 .NET API
ASP.NET Core Web中使用AutoMapper进行对象映射
ASP.NET Core Web中使用AutoMapper进行对象映射
|
3月前
|
安全 前端开发 测试技术
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
安全开发-PHP应用&模版引用&Smarty渲染&MVC模型&数据联动&RCE安全&TP框架&路由访问&对象操作&内置过滤绕过&核心漏洞
|
4月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
63 0
|
4月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
|
4月前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css