首页 > 解决方案 > 发布后检索具有多个列表对象的 ViewModel

问题描述

我有一个像这样的视图模型类:

public class ViewModel
{
    public string VendorService { get; set; }
    public List<ResponseView> responseList { get; set; }
}

控制器具有获取和发布编辑操作:

public ActionResult Edit(int? id)
{
    List<ResponseView> resp = getResponseView(id); //get the list of ResponseView objects.
    ViewModel view = new ViewModel();
    view.responseList = resp;
    view.VendorService = "Car Manufacturer";
    return View(view);
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(ViewModel view)
{
    if (ModelState.IsValid)
    {
        List<ResponseView> respList = new List<ResponseView>();
        respList = view.responseList;

        foreach(ResponseView resp in respList)
        {
            Debug.WriteLine(resp.Question);
        }

        return RedirectToAction("editConfirm");
    }

    return View("Index");
}

编辑.cshtml

@model Tools.Models.ViewModel
@{
  List<Tools.Models.ResponseView> respList= Model.responseList as List<Tools.Models.ResponseView;
}

        @foreach (var item in respList)
        {
           <div class="col-md-5">
                @Html.EditorFor(model => item.Response, "" } })
                @Html.ValidationMessageFor(model => item.Response, "", "" })
           </div>
         }

我能够根据需要在视图模型中显示视图和所有数据。但是当我尝试在下面的 foreach 行中检索我的 post 操作中的响应时,我得到了一个空指针引用。

    List<ResponseView> respList = new List<ResponseView>();
    respList = view.responseList;

    foreach(ResponseView resp in respList)
    {
        Debug.WriteLine(resp.Response);
    }

标签: c#asp.net-mvc

解决方案


你必须for改用foreach. 请试试这个,

@for (int i = 0; i < Model.responseList.Count; ++i) {
<div>
@Html.EditorFor(model => Model.responseList[i].Response, "")
</div>

推荐阅读