Использование глагола PUT в форме редактирования с использованием ASP.NET MVC 4 и Restful Routing .NET

Я использую пакет Restful Routing .NET NuGet (https://github.com/stevehodgkiss/restful-routing) в моем проекте ASP.NET MVC 4. Согласно документации, я должен иметь возможность отправить форму, используя глагол PUT для действия Update в контроллере, поместив @HTML.PutOverrideTag() в форму. Я не смог заставить это работать. Каждый раз, когда я отправляю форму, я получаю ошибку 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. Перейдите к: /пользователь/изменить
  2. Отображает формы
  3. Нажмите кнопку отправки
  4. Получите ошибку 404 Not Found

person Matthew Scott    schedule 03.02.2013    source источник


Ответы (1)


Пытаться

@Html.HttpMethodOverride(HttpVerbs.Put)

вместо

@Html.PutOverrideTag()
person interDist    schedule 20.02.2013
comment
Это лучшее, что я нашел за весь день! Даже не знал, что такое существует! - person Adrian Thompson Phillips; 03.12.2015