html5中文学习网

您的位置: 首页 > 网络编程 > ASP.NET » 正文

Asp.net MVC中提交集合对象,实现Model绑定_.NET教程_编程技术

[ ] 已经帮助:人解决问题

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

看下面的代码,Action方法UpdateStudents就需要IEnumerable<Student>类型的参数,用来批量更新Student数据。XQyHTML5中文学习网 - HTML5先行者学习网

[HttpPost] public ActionResult UpdateStudents(IEnumerable<Student> students) {     //....save }

上面是一个非常典型的应用场景, 如何为表单中的field命名,能够使得提交表单的时候,model bind能够自动创建好IEnumerable<Student>类型的students呢?XQyHTML5中文学习网 - HTML5先行者学习网

下面就是在批量更新场景下的表单View代码XQyHTML5中文学习网 - HTML5先行者学习网

@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的表单的实际效果XQyHTML5中文学习网 - HTML5先行者学习网

<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的形式。XQyHTML5中文学习网 - HTML5先行者学习网

上面是更新的例子,如果是批量添加数据,不能使用HtmlHelper,只要是提交的表单项按照这个规则来命名,MVC也能够自动绑定成集合对象。XQyHTML5中文学习网 - HTML5先行者学习网

XQyHTML5中文学习网 - HTML5先行者学习网
XQyHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助