Ссылка действия удаления MVC не работает - PullRequest
0 голосов
/ 13 сентября 2011

Ссылка «Мое действие» выглядит так:

<%= Html.ActionLink("Delete Message", "DeleteMessage", new { messageId=item.MESSAGEID })%>

И мое действие в моем контроллере выглядит так:

    [AcceptVerbs(HttpVerbs.Delete)]
    public ActionResult DeleteMessage(int messageId)
    {

        Message message = context.Messages.FirstOrDefault(m => m.MESSAGEID.Equals(messageId));
        if (message != null)
        {
            context.Messages.DeleteOnSubmit(message);
            context.SubmitChanges();
        }
        return View();
    }

Но по какой-то причине элемент в моей модели все еще работаетне удаляются.Где я ошибся?

Ответы [ 2 ]

6 голосов
/ 13 сентября 2011

ActionLink создает элемент a со ссылкой, доступ к которой осуществляется по стандартному запросу GET.Ваше действие, однако, явно указывает, что оно ожидает DELETE метод, следовательно, оно никогда не вызывается.

Более того, никакие «разрушительные» действия не должны выполняться с запросами GET.См. this по реализации ссылки "удалить".

1 голос
/ 13 сентября 2011

ActionLink (т. Е. a html tag) отправляет запрос GET вместо DELETE, поэтому ваше действие не сопоставляется с запросом.

Вы можете использовать Ajax для выполнения запроса DELETE (см. Раздел «Выполнение удаления Ajax»).

...