在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); }
然后您的链接应该正常工作。
希望这可以帮助!