42 votes

ASP.NET MVC 3 (Razor) Ajax.ActionLink - Qu'est-ce que je fais de travers?

Essayer d'avoir un AJAX d'action de lien quand on clique dessus, doit faire un HttpGet pour une méthode d'action qui renvoie un PartialViewResult et enfonce le HTML dans un div.

Voici mon avis:

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

Voici la méthode de l'action:

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

Voici le code HTML qu'il génère:

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

Semble bien pour moi.

Mais au lieu de faire un appel AJAX, il procède régulièrement à un HTTP GET via l'adresse URL du navigateur et redirige vers /Admin/Post/ShowOptions.

Évidemment im manque quelque chose - mais quoi?

66voto

Talljoe Points 8423

Assurez-vous que votre page contient la bibliothèque javascript AJAX, peu encombrante.

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

48voto

psy Points 1522

Et pour ceux qui utilisent le moteur de vue Razor ...

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

1voto

Yarx Points 5999

Vous pouvez également vouloir inclure l'option InsertionMode dans AjaxOptions. Je suis sûr qu'il existe un comportement par défaut si vous l'excluez, mais il est préférable de le définir explicitement pour des choses comme celle-ci.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X