ASP.NET MVC 5 HttpPost

本文关键字:HttpPost MVC NET ASP | 更新日期: 2023-09-27 18:20:44

我有控制器:

 [HttpGet]
    public ActionResult ItemIndex()
    {
        List<Item> item = RepositoryFactory.Create<IItemRepository>().ItemList();
        return View(item);
    }
[HttpPost]
    public ActionResult ItemIndex(FormCollection formCollection)
    {
        foreach( string key in formCollection.AllKeys)
        {
            Response.Write("Key" + key);
            Response.Write(formCollection[key]);

        }
        return View();
    }

观点:

@model List<Kev.Models.Item>
<div style="font-family:Arial">
    @using (Html.BeginForm())
    {
        @Html.ValidationSummary(true)
       foreach (var item in Model)
        {
            @Html.LabelFor(m => item.Start)
            @Html.EditorFor(m => item.Start)
            @Html.ValidationMessageFor(m => item.Start)
        }
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Zapisz" class="btn btn-default" />
            </div>
        </div>
    }
</div>

存储库中有包含Item的DbContext。我想做的是在View中填充这些文本框,并提交更改以使用这些值更新现有数据库。我现在所做的不是工作代码,我甚至不能让这个HttpPost工作。它在@foreach中弹出>>模型的NullReferenceException,不知道如何修复它。

ASP.NET MVC 5 HttpPost

foreach更改为for循环,如下所示:

for(int i=0; i<Model.Count;i++)
{
  @Html.LabelFor(m => Model[i].Start)
  @Html.EditorFor(m => Model[i].Start)
  @Html.ValidationMessageFor(m => Model[i].Start)
}

并将您的动作参数从FormCollection更改为List<Item>:

[HttpPost]
public ActionResult ItemIndex(List<Kev.Models.Item> model)
{
   return View();
}