使用ASP.NET MVC 4和Restful Routing .NET以编辑形式使用PUT动词

时间:2013-02-03 14:57:05

标签: asp.net-mvc-4 asp.net-mvc-routing restful-url

我在ASP.NET MVC 4项目中使用Restful Routing .NET NuGet包(https://github.com/stevehodgkiss/restful-routing)。根据文档,我应该能够通过将@HTML.PutOverrideTag()放在表单中,使用PUT动词向控制器中的Update操作提交表单。我无法让这个工作。每次我提交表单时,都会收到404 Not Found错误。任何人都可以确认他们是否能够正常工作?我的代码如下:

routeconfig.cs:

map.Resources<UsersController>();

视图\用户\ edit.cshtml:

@using (Html.BeginForm("update", "users", new { id = Model.Id }))
{
    @Html.PutOverrideTag()

    <input id="user_submit" name="commit" type="submit" value="Update" />
}

UsersController.cs:

[Authorize]
[HttpGet]
public ActionResult Edit(int id)
{
    var user = UserRepository.GetById(id);
    return View(user);
}

[Authorize]
[HttpPut]
public ActionResult Update(int id, User user)
{
    return View("edit", user);
}

重新创建的步骤:

  1. 浏览至:/ user / edit
  2. 表格显示
  3. 按提交按钮
  4. 收到404 Not Found错误

1 个答案:

答案 0 :(得分:1)

尝试

@Html.HttpMethodOverride(HttpVerbs.Put)

而不是

@Html.PutOverrideTag()