asp.net-mvc ajax asp.net-mvc-3 razor actionlink

ASP.NET MVC 3(Razor) Ajax.ActionLink-¿Qué estoy haciendo mal?



asp.net-mvc asp.net-mvc-3 (3)

Intentando tener un enlace de acción AJAX que al hacer clic, debe hacer un HttpGet a un método de acción que devuelve un PartialViewResult y PartialViewResult el HTML en un div.

Aquí está mi vista:

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

Aquí está el método de acción:

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

Aquí está el HTML que genera:

<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>

Luce bien para mi.

Pero en lugar de hacer una llamada AJAX, realiza un HTTP GET regular a través de la URL del navegador y redirige a / Admin / Post / ShowOptions .

Obviamente me falta algo, ¿pero qué?


Asegúrese de tener la discreta biblioteca javascript AJAX incluida en su página.

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


Es posible que también desee incluir la opción InsertionMode en AjaxOptions. Estoy seguro de que hay un comportamiento predeterminado si lo excluyes, pero es mejor definirlo explícitamente para cosas como esta.


Y para aquellos que usan el motor de visualización Razor ...

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