首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从FormCollection中填充模型

从FormCollection中填充模型
EN

Stack Overflow用户
提问于 2015-07-10 16:27:04
回答 2查看 274关注 0票数 1

我想用来自FormCollection的数据填充我的模型。

我传递给页面的视图模型有一个属性,一个汽车列表。

代码语言:javascript
复制
public List<Car> Cars { get; set; }

在视图中,我循环遍历每一个,并作为一个表单输出。

代码语言:javascript
复制
@for (int i = 0; i < Model.Cars.Count; i++)
    {
        <form action="#" id="updateForm-@Model.Cars[i].Id" class="updateForm">
            @Html.AntiForgeryToken()
            @Html.Hidden("Id", Model.Cars[i].Id)
            <div class="row">
                <div class="col-md-2 col-sm-4">
                    @Html.TextBoxFor(m => m.Cars[i].CarName, new { placeholder = "car name", name = "CarName", id = "CarName", @class = "user-friendly-size" })
                </div>

等等,每个表单都有自己的按钮。

然后使用JQuery进行form.serialise,并将表单数据发送到后端。

代码语言:javascript
复制
[AjaxOnly]
    public JsonResult Update(FormCollection form)

据我所知,我不能使用模版活页夹。

代码语言:javascript
复制
    public JsonResult Update(Car car)

因为当表单数据被序列化和发布时,名称会以Cars.Id的形式出现,并且模型绑定器无法绑定。这就是我的理解。

是否有办法以一种简单的方式将FormCollection中的值提取到我的模型中?可能是用反射吗?还是我错了我们可以自动绑定?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-10 17:04:02

使用foreach循环并使用您的汽车模型的属性。然后,当发布到Update操作时,您的模型应该绑定:

代码语言:javascript
复制
@foreach (var car in Model.Cars)
    {
        <form action="#" id="updateForm-@Model.Id" class="updateForm">
            @Html.AntiForgeryToken()
            @Html.Hidden("Id", car.Id)
票数 2
EN

Stack Overflow用户

发布于 2015-07-10 16:40:18

如果您一次只发送一个Car实例,则实际上不需要包括迭代器来呈现表单输入名称,因为每个表单只需要在它们自己的范围内发送输入。

然后,您只需要收到一辆汽车模型,就像您在最初的问题中所述:

代码语言:javascript
复制
public JsonResult Update(Car car) 

您只需要确保覆盖助手提供的默认id和名称,就像对CarName输入一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31345842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档