所以我使用Database First和Entity Framework方法创建了MVC 4应用程序。我创建了各自的模型,控制器和视图(通过使用Entity Framework模板添加具有读/写操作和视图的MVC控制器)。因此它包含创建,删除,编辑,索引和详细信息视图以及相应的操作方法。
当我单击“详细信息”,“编辑”或“删除”时,我看到作为action方法中的参数的位置id未通过值传递,因此仅使用默认值0。我了解到,使用HttpGet,我们需要将其作为URL中的查询字符串传递,但在我的情况下,我如何隐式传递编辑/详细信息或删除的位置ID。
答案 0 :(得分:2)
你这样做:
查看:
foreach (var item in Model)
{
<tr>
<td>
@Html.ActionLink("Edit", "EditAction", new {id = item._account})
</td>
<td>
@Html.ActionLink("Details", "DetailsAction", new {id = item._account})
</td>
<td>
@Html.ActionLink("Delete", "DeleteAction", new {id = item._account})
</td>
</tr>
}
控制器:
//
// GET: /Controller/EditAction/id
public ActionResult EditAction(int id)
{
//Do Something
}
//
// GET: /Controller/DetailsAction/id
public ActionResult DetailsAction(int id)
{
//Do Something
}
//
// GET: /Controller/DeleteAction/id
public ActionResult DeleteAction(int id)
{
//Do Something
}
答案 1 :(得分:0)
列表视图模板的链接是使用@ Html.ActionLink创建的吗?如果是这样,他们必须分别包含他们打算明确指出的项目ID,所以他们应该是这样的 @ Html.ActionLink(“编辑”,新{id = item.Id})) 如果使用默认路由,这是正确的。
顺便说一下,我很惊讶这些链接在列表模板中默认不包含正确的Id设置。