在mvc 4对象列表中进行“内联”编辑

时间:2013-05-07 22:58:33

标签: asp.net-mvc-4 model

我有一个奇怪的问题,我不知道这是否真的可行。 我想要的是,能够列出我的模型中的所有值,并直接在列表中编辑它们。

这就是我所拥有的:

模型链接器:

     public class StoreLinkerModel
      {
        //public Guid? id { get; set; }
        public IEnumerable<Stores> StoresAndOpeninghours { get; set; }
      }

public class Stores
  {
    public long ID { get; set; }
    public string StoreName { get; set; }
    public string Address { get; set; }
    public string Zip { get; set; }
    public string City { get; set; }
}

我的控制器:

public ActionResult Overview()
      {

        var model = new StoreLinkerModel
        {
          StoresAndOpeninghours = new[]
            {
              new Stores()
                {
                  ID = 0,
                  Address = "Enghavevej 70"
                }, 
                new Stores()
                  {
                    ID=1,
                    Address = "Løngangsgade 30"
                  }, 
            }

        };
        return View(model);
      }

      [HttpPost]
      public ActionResult Overview(StoreLinkerModel model)
      {
        if (ModelState.IsValid)
        {
          var x = "go go go";

        }


        return RedirectToAction("Overview");
      }

我的overview.aspx页面:

@model streetoffrs.web.Models.StoreLinkerModel
@{
    ViewBag.Title = "Overview";
    Layout = "~/Views/Shared/_dashboard.cshtml";
}

@Html.EditorFor(x => x.StoresAndOpeninghours)

和我的EditorTemplate stores.aspx

@model streetoffrs.web.Models.Stores

@using (Html.BeginForm("Overview", "Dashboard", FormMethod.Post, new { name = "id" + @Html.DisplayFor(m => m.ID) }))
{


  @Html.EditorFor(x => x.Address)
  <input type="submit" class="left btn btn-primary" value="Ret butiksdata">
}
<br />

列表正在按原样生成,当我点击第一个编辑器的第一个按钮时,它会将模型发布到我的控制器,但是当我按下第二个按钮时,模型为空,但第一个按钮仍然是作品!

这是否可能,如果是,我错过了什么,如果没有,请告诉我如何实现这一目标。

提前感谢!

1 个答案:

答案 0 :(得分:0)

你需要编辑这样的帖子:

  [HttpPost]
  public ActionResult Overview(StoreLinkerModel model)
  {
    if (ModelState.IsValid)
    {
      var x = "go go go";

    }


    return View(model);
  }

RedirectToAction 将转到第一个概述操作,因此您将丢失数据。