我们可以隐式传递HttpGet查询字符串吗?

时间:2013-07-23 07:02:11

标签: c# asp.net-mvc-4 query-string model-binding http-get

所以我使用Database First和Entity Framework方法创建了MVC 4应用程序。我创建了各自的模型,控制器和视图(通过使用Entity Framework模板添加具有读/写操作和视图的MVC控制器)。因此它包含创建,删除,编辑,索引和详细信息视图以及相应的操作方法。 enter image description here

当我单击“详细信息”,“编辑”或“删除”时,我看到作为action方法中的参数的位置id未通过值传递,因此仅使用默认值0。我了解到,使用HttpGet,我们需要将其作为URL中的查询字符串传递,但在我的情况下,我如何隐式传递编辑/详细信息或删除的位置ID。

2 个答案:

答案 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设置。