在ASP.NET MVC 5中将整个对象从视图传递到控制器

dze*_*siz 3 .net c# asp.net-mvc asp.net-mvc-5

有没有办法将整个对象从ASP.NET MVC 5视图传递给控制器​​?这是我的情况:

  • 我有一个显示数据库表中所有行的视图
  • 视图的模型是IEnumerable
  • 每行都有一个链接,它的数据通向scaffolded UPDATE视图

有没有办法将整个对象传递给Update控制器方法,以便它最初用旧数据填充表单输入?就像是:

@Html.Action("Update me!", "Update", new { objectFromModelList })
Run Code Online (Sandbox Code Playgroud)

然后在控制器中

public ActionResult Update(MyType parameter)
    {
        return View(parameter);
    }
Run Code Online (Sandbox Code Playgroud)

或类似的东西.请帮助,我是新手,无法在任何地方找到答案.

Shy*_*yju 5

你的物品可能太大了!查询字符串对您可以通过浏览器传递的数据量有限制.您应该考虑传递一个唯一的id值(记录)并使用它在您的action方法中从db获取整个记录并将其传递给视图.

@foreach(var item in SomeCollection)
{
  <tr>
    <td> @Html.Action("Update me!", "Update", new {  id = item.Id }) </td>
  </tr>
}
Run Code Online (Sandbox Code Playgroud)

并在动作方法

public ActionResult Update(int id)
{
    var item = GetItemFromId(id);
    return View(item);
}
Run Code Online (Sandbox Code Playgroud)

假设GetItemFromId方法从唯一的id值返回方法/视图模型.基本上,您可以使用db表/存储库中的唯一ID获取整个记录.