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

有没有办法将整个对象从ASP.NET MVC 5 View传递给Controller? 这是我的情况:

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

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

@Html.Action("Update me!", "Update", new { objectFromModelList }) 

然后在控制器中

 public ActionResult Update(MyType parameter) { return View(parameter); } 

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

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

 @foreach(var item in SomeCollection) {   @Html.Action("Update me!", "Update", new { id = item.Id })   } 

并在动作方法

 public ActionResult Update(int id) { var item = GetItemFromId(id); return View(item); } 

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

假设您的更新视图不​​是IEnumerable类型…

您只需要将要发送的记录的ID传递给更新视图…

像这样:

 @Html.Action("Update me!", "Update", new { id = item.ID }) 

然后您的Update操作将如下所示:

 [HttpGet] public ActionResult Update(int id) { var parameter = db/* connection string variable */.TableName.Find(id); return View(parameter); } 

然后您的链接应该正常工作。

希望这可以帮助!