所以我使用数据库优先和实体框架方法创建了 MVC 4 应用程序。我创建了各自的模型、控制器和视图(通过使用实体框架模板添加具有读/写操作和视图的 MVC 控制器)。因此它带有创建、删除、编辑、索引和详细信息视图以及相应的操作方法。
当我单击详细信息、编辑或删除时,我看到作为操作方法中的参数的位置 id 未通过值传递,因此仅使用默认值 0。我了解到,使用 HttpGet 我们需要将其作为查询字符串传递给 URL,但在我的情况下,如何隐式传递位置 ID 以进行编辑/详细信息或删除。
所以我使用数据库优先和实体框架方法创建了 MVC 4 应用程序。我创建了各自的模型、控制器和视图(通过使用实体框架模板添加具有读/写操作和视图的 MVC 控制器)。因此它带有创建、删除、编辑、索引和详细信息视图以及相应的操作方法。
当我单击详细信息、编辑或删除时,我看到作为操作方法中的参数的位置 id 未通过值传递,因此仅使用默认值 0。我了解到,使用 HttpGet 我们需要将其作为查询字符串传递给 URL,但在我的情况下,如何隐式传递位置 ID 以进行编辑/详细信息或删除。
你这样做:
看法:
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
}
列表视图模板的链接是使用@Html.ActionLink 创建的,对吗?如果是这样,它们必须分别包含它们打算明确指向的项目 ID,因此它们应该类似于 @Html.ActionLink("Edit", new {id=item.Id})) 如果您使用默认路由。
顺便说一句,我很惊讶这些链接在列表模板中默认不包含正确的 ID 设置。