MVC5传递模型项目从视图到控制器
问题描述:
我使用的.Net MVC5,我试图创建与编辑链接(或按钮)将发布(所以我不能使用ActionLink的)整个索引视图在视图中呈现的实体列表中的模型项目实体。我该怎么做?MVC5传递模型项目从视图到控制器
我的代码(到目前为止)低于
@model IEnumerable<Projname.Models.MyEntity>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Name)
</th>
<th>Hello there</th>
<th>life is good</th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
<td>
@using (Html.BeginForm("Edit", "Edit", FormMethod.Post))
{
@Html.Hidden(mytem => item);
<input type="submit" value="Edit" class="btn btn-default" />
}
</td>
<td>
@Html.ActionLink("Details", "Details", new { id = item.PrimeKey }) |
@Html.ActionLink("Delete", "Delete", new { id = item.PrimeKey })
</td>
</tr>
}
</table>
</body>
</html>
我假设有一个更好的方式来做到这一点,而不是为每个实体的属性创建一个隐藏字段。
答
你需要把你想编辑或更改成形式
<form class="form-horizontal" action="GetItemsFromView" method="post">
<input type="text" name="EditedModelItem">
</form>
之后,您可以在您的控制器调用任何修改的项目中的项目,通过 串保持=的Request.Form [“EditedModelItem”] ;在GetItemsFromView方法中的 。
答
总结一切:
@using (Html.BeginForm("Edit", "Edit", FormMethod.Post))
{
}
然后:
public ActionResult Edit(Model model)
{
if (ModelState.IsValid)
{
}
}
或者:
public ActionResult Edit(FormCollection formCollection)
{
}
通myItem和刚ID /主键再从数据库中检索项当你将它传递给你的编辑视图。 – AWinkle
为什么通过整个模型,只是标识会做 – scottdavidwalker
@AWinkle通常我会做到这一点,但因为我使用Azure的表,只有指定查询的行键(主键)会导致不良的全表扫描http://stackoverflow.com/questions/19715885/azure-tables-query-by-rowkey-as-condition。所以我尽量避免它。 – JOW