Asp.net mvc 为IEnumerable中的每个模型创建编辑表单<;模型>;ASP.NETMVC

Asp.net mvc 为IEnumerable中的每个模型创建编辑表单<;模型>;ASP.NETMVC,asp.net-mvc,asp.net-core-mvc,Asp.net Mvc,Asp.net Core Mvc,我正在尝试为模型的IEnumerable中的每个模型创建一个编辑表单。基本上,我的Index.cshtml页面有一个数据库表中每个对象的表,我想为每个模型添加一个编辑表单。然而,无论出于何种原因,每当我发布一个单独的表单时,数据都会作为NULL传递 以下是我所拥有的: 型号: public partial class Person { public int id { get; set; } public string name { get; set; } } 控制器: publ

我正在尝试为模型的
IEnumerable
中的每个模型创建一个编辑表单。基本上,我的Index.cshtml页面有一个数据库表中每个对象的表,我想为每个模型添加一个编辑表单。然而,无论出于何种原因,每当我发布一个单独的表单时,数据都会作为NULL传递

以下是我所拥有的:

型号:

public partial class Person
{
    public int id { get; set; }
    public string name { get; set; }
}
控制器:

public async Task<IActionResult> Index()
{
    return View(await _context.ASNGFellows.ToListAsync());
}

public async Task<IActionResult> Edit(Person person)
{
    if (ModelState.IsValid)
    {
        #update database object
    }

    return View(Person)
}
 [HttpPost]
    public async Task<IActionResult> Edit(Person person)
    {
        if (ModelState.IsValid)
        {
        }

        return View(person);
  }
公共异步任务索引()
{
返回视图(wait_context.ASNGFellows.ToListAsync());
}
公共异步任务编辑(个人)
{
if(ModelState.IsValid)
{
#更新数据库对象
}
返回视图(个人)
}
视图(Index.cshtml):

@model IEnumerable
@DisplayNameFor(model=>model.name)
行动
@foreach(模型中的var项目)
{
@DisplayFor(modelItem=>item.name)
@Html.AntiForgeryToken()
@Html.HiddenFor(modeleItem=>item.id)
@Html.ValidationSummary(“,new{@class=“text danger”})
@LabelFor(modeleItem=>item.name)
@EditorFor(modeleItem=>item.name)
@Html.ValidationMessageFor(modelItem=>item.name)
}

表单正确生成,当我提交时,它会点击controller方法,但是
person
对象有空值。我在这里做错了什么?

您可以像下面这样更改您的表单

<form method="post" asp-action="Edit">
      @Html.AntiForgeryToken()
      <input type="hidden" name="person.id" value="@item.id"/>
      @Html.ValidationSummary("", new { @class = "text-danger" })
    <div class="form-group">
      @Html.LabelFor(modelItem => item.name)
      <input type="text" name="person.name" value="@item.name" />
      @Html.ValidationMessageFor(modelItem => item.name)
    </div>
    <div class="form-group">
       <input type="submit" value="Save" class="btn btn-primary" />
    </div>
</form>

@Html.AntiForgeryToken()
@Html.ValidationSummary(“,new{@class=“text danger”})
@LabelFor(modeleItem=>item.name)
@Html.ValidationMessageFor(modelItem=>item.name)
控制器:

public async Task<IActionResult> Index()
{
    return View(await _context.ASNGFellows.ToListAsync());
}

public async Task<IActionResult> Edit(Person person)
{
    if (ModelState.IsValid)
    {
        #update database object
    }

    return View(Person)
}
 [HttpPost]
    public async Task<IActionResult> Edit(Person person)
    {
        if (ModelState.IsValid)
        {
        }

        return View(person);
  }
[HttpPost]
公共异步任务编辑(个人)
{
if(ModelState.IsValid)
{
}
返回视图(人);
}