Ajax.ActionLink не размещает - PullRequest
6 голосов
/ 18 июня 2010

Я пытаюсь перейти к действию MVC, используя POSTing, а не GETting.(Действие - УДАЛЕНИЕ, и я не хочу, чтобы оно было доступно по внешней ссылке.)

Я использую ссылку в сетке, сгенерированную

 Ajax.ActionLink("Remove", "Delete", new { saID = Model.Said, id = e.id }, new AjaxOptions { HttpMethod = "POST", Confirm = "Are you sure you want to delete this item?" })

, которая генерирует следующееHTML:

<a href="/Equipment/Delete/102424/229933" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, confirm: 'Are you sure you want to delete this item?', httpMethod: 'POST' });">Remove</a>

Моя проблема в том, что когда я нажимаю на ссылку, я достигаю действия Удалить с помощью GET, а не POST, а диалоговое окно подтверждения не выполняется.Я гуглил это в течение нескольких часов и просто продолжал оборачиваться вокруг оси.Что я делаю не так?

Ответы [ 2 ]

6 голосов
/ 18 июня 2010

Вероятно, у вас есть другая ошибка javascript на вашей странице, которая препятствует запуску javascript, который обрабатывает AJAX POST.В этом случае ссылка возвращается к поведению по умолчанию (GET).Самое простое, что можно сделать, это использовать инструменты разработчика IE8 или Firefox / Firebug (я предпочитаю их) и посмотреть, есть ли какие-либо ошибки в консоли при загрузке страницы или при вызове вашего действия.Если вы используете IE, вам нужно будет использовать Internet Options -> Advanced и снять отметку Disable script debugging.

Исправьте ошибку JavaScript, и я думаю, что она просто начнет работать.

5 голосов
/ 04 октября 2011

Я хотел добавить это как комментарий к принятому ответу, но почему-то нет возможности ввести это как комментарий, поэтому добавив это как ответ

В моем случае мне пришлось добавить "jquery.unobtrusive-ajax.min.js "до MicrosoftAjax.js и MicrosoftMvcAjax.js, а затем ссылка действия начала инициировать запрос ajax.Но это был GET, и я хотел опубликовать сообщение, поэтому я просто добавил HttpMethod = "Post" в «AjaxOptions».Это было это.

...