ASP.NET MVC 3 (Razor) Ajax.ActionLink - Что я делаю не так? - PullRequest
42 голосов
/ 20 апреля 2011

Попытка получить ссылку на действие 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 .

Очевидно, что я что-то упустил - но что?

Ответы [ 3 ]

66 голосов
/ 20 апреля 2011

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

<script src="<%=Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")%>" type="text/javascript"></script>
48 голосов
/ 17 мая 2011

А для тех, кто использует движок Razor ...

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
1 голос
/ 17 мая 2011

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

...