ASP.NET MVC 3 (Razor) Ajax.ActionLink - Что я делаю неправильно?

Попытка иметь ссылку на действие AJAX, которая при нажатии, должна сделать HttpGet для метода действий, который возвращает PartialViewResult и перетаскивает HTML в div.

Здесь мой взгляд:

<div id="admin-options" class="admin"></div>
@Ajax.ActionLink("Show Admin Options", "ShowOptions", "Post", new { area = "Admin" }, new AjaxOptions { UpdateTargetId = "admin-options", HttpMethod = "GET" })

Здесь метод действия:

public class PostController : Controller
{
   [HttpGet]
   [Authorize(Roles="Admin")]
   public PartialViewResult ShowOptions()
   {
      return PartialView();
   }
}

Здесь HTML он генерирует:

<a data-ajax="true" data-ajax-method="GET" data-ajax-mode="replace" data-ajax-update="#admin-options" href="/Admin/Post/ShowOptions">Show Admin Options</a>

Выглядит хорошо для меня.

Но вместо выполнения вызова AJAX он выполняет обычный HTTP GET через URL-адрес браузера и перенаправляет на /Admin/Post/ShowOptions.

Очевидно, что что-то не хватает, но что?

Ответ 1

Убедитесь, что у вас есть ненавязчивая библиотека javascript AJAX, включенная в вашу страницу.

<script src="<%=Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")%>" type="text/javascript"></script>

Ответ 2

И для тех, кто использует механизм просмотра Razor...

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

Ответ 3

Вы также можете включить параметр InsertionMode в AjaxOptions. Я уверен, что есть поведение по умолчанию, если вы его исключите, но лучше явно определить его для таких вещей.