如何获得同一类的对象的集合张贴回控制器与指定的html表单值

本文关键字:控制器 张贴回 表单 html 集合 对象 何获得 一类 | 更新日期: 2023-09-27 18:08:40

我已经将生成的控制器实体框架的编辑功能转换为模型的视图。我不是一次编辑处理一个模型实例,而是发送所有实例的列表,并在剃刀视图的Html.BeginForm中循环它们。当我发布表单时,我尝试将列表作为参数传递到我的控制器。我想要一个列表的所有实例与他们所有的更新值,但列表张贴为空。我看不出这是一个加价问题。请帮助。

这是我的控制器:

public ActionResult Allotment(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    List<ClaimFile> claimFiles = db.ClaimFiles.Where(b => b.ClaimID == id).ToList();
    if (claimFiles.Count == 0)
    {
        return HttpNotFound();
    }
    ViewBag.DocumentListID = new SelectList(db.DocumentLists, "DocumentListID", "Description", claimFiles.FirstOrDefault().DocumentListID);
    return View(claimFiles);
}

视图:

@model List<Harry.ClaimFile>
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    <h4>ClaimFile</h4>
    <hr />
    @foreach (var claimfile in Model)
    {
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        @Html.HiddenFor(model => claimfile.ClaimFileID)
        <div class="form-group">
            @Html.LabelFor(model => claimfile.DocumentListID, "DocumentListID", htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownList("DocumentListID", null, htmlAttributes: new { @class = "form-control" })
                @Html.ValidationMessageFor(model => claimfile.DocumentListID, "", new { @class = "text-danger" })
            </div>
        </div>

    }
    <input type="submit" value="Save" class="btn btn-default" />
}

然后在post控制器上,当我点击razor视图上的save按钮时,我收到null:

[HttpPost]
public ActionResult Allotment(List<ClaimFile> claimFiles)
{
    //List<ClaimFile> claimFiles = null. This is my problem
}

请告诉我我做错了什么,或者给我一个解决问题的方法。谢谢。

如何获得同一类的对象的集合张贴回控制器与指定的html表单值

我还没有尝试将列表发送回控制器,

我在网上看到这篇文章,也许对你有帮助。