Проблемы при правильном удалении HTTP с Ajax.ActionLink - PullRequest
6 голосов
/ 04 августа 2011

Что я пытаюсь сделать: Попробуйте удалить запись, используя «правильный» HTTP Delete.

Код контроллера:

    [HttpDelete]
    public void DeleteRun(int RunId)
    {
        repository.RemoveEntry(RunId);

    }

Razor View:

             @Ajax.ActionLink("Delete","DeleteRun",new {RunId = run.RunId},
                         new AjaxOptions() { Confirm = "Are you sure you want to delete this entry?",
                                            HttpMethod = "DELETE",
                                            OnComplete = string.Format("DeleteRunInTable({0})",run.RunId)

                         })

Javascript (в отдельном включенном файле):

   function DeleteRunInTable(RunId) {
       $("tr[data-runid=" + RunId).remove();
}

Ссылка, которую создает метод actionlink:

 <a data-ajax="true" data-ajax-complete="DeleteRunInTable(11)" data-ajax-confirm="Are you sure you want to delete this entry?" data-ajax-method="DELETE" href="/Runs/Delete/11">Delete</a>

Не уверен, работает ли часть javascript, но не стоит беспокоитьсяЭто.Попытка сделать это по одному шагу за раз :).Теперь он просто работает как традиционный тег, и когда я нажимаю на ссылку, он просто выполняет GET-запрос href.Конечно, я получаю ошибку 404 из-за [HTTPDelete], который я установил на свой контроллер.Я довольно новичок в веб-разработке, поэтому я уверен, что в javascript или jquery есть и другие способы сделать то же самое, но я просто делаю то, что знаю на данный момент.

Ответы [ 2 ]

9 голосов
/ 04 августа 2011

Это должно сработать, как я сделал это недавно, и все, что мне нужно было сделать, это указать HttpMethod в аргументе AjaxOptions.

Вам также необходимо убедиться, что на странице есть скрипт jquery.unobtrusive-ajax.js .

4 голосов
/ 04 августа 2011

Это было на самом деле простое решение .... мне не хватало jquery.unobtrusive-ajax.min.js: P. Я оставляю пост здесь, так что любой, кто пытается сделать что-то похожее на то, что я делаю, будет знать, что это возможно, просто убедитесь, что вы включили jquery & jquery.unobtrusive.

Редактировать: просто для пояснения, что ActionLink работает с JQuery, если вы используете MVC3, в противном случае он использует библиотеки javascript от Microsoft.

...