Je n'arrive pas à comprendre pourquoi cette requête Ajax ne se déclenche pas correctement. Par souci de simplicité, j'ai essayé d'implémenter la requête Ajax en utilisant this tutorial. Cependant, je n'arrive pas à faire en sorte que mon contrôleur reconnaisse la demande comme telle. J'ai essayé de placer le Ajax.ActionLink dans le div pour être mis à jour (en dehors d'ici). En utilisant Response.Write pour placer le Datetime, celui de la Div est mis à jour, tandis que celui en dehors de la div cible ne l'est pas (comme prévu). Je ne connais pas très bien le fonctionnement de la bibliothèque MS Ajax, mais en surface, il semble que la partie droite de la page soit mise à jour, mais mon contrôleur ne reconnaît pas le type de requête et génère donc des informations incorrectes.asp.net Demande Ajax MVC ne se déclenche pas correctement
...
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcAjax.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-1.2.6.min.js" type="text/javascript"></script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div class="chart" id="divChart">
<% Html.RenderPartial("GraphView", Model); %>
<br />
<% Response.Write(DateTime.Now); %>
<br />
</div>
<%= Ajax.ActionLink("no parameters", "MyWorkouts", new AjaxOptions{ UpdateTargetId = "divChart"}) %>
<%= Ajax.ActionLink("id parameter", "MyWorkouts", new {chtype=1},new AjaxOptions { UpdateTargetId = "divChart", OnBegin = "beginContactList", OnSuccess = "successContactList", OnFailure = "failureContactList" })%>
<%= Ajax.ActionLink("all parameters", "MyWorkouts", new {chtype=2, range=ViewData["daterangevalue"]},new AjaxOptions { UpdateTargetId = "divChart", OnBegin = "beginContactList", OnSuccess = "successContactList", OnFailure = "failureContactList" })%>
<br />
<% Response.Write(DateTime.Now); %>
<h2>
...
Et puis mon ActionResult ressemble donc ...
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult MyWorkouts(int? chtype, int? range) {
int dateRange = 3;
// do some stuff here - left out for readability
if (Request.IsAjaxRequest()) {
if (range != null) {
dateRange = (int)range;
}
}
//do some other stuff...
if (Request.IsAjaxRequest()) {
return PartialView("GraphView", workouts);
} else {
return View(workouts);
}
}
(Tout est à peu près par défaut, car cela est juste une page de test pour mettre en œuvre une fois que je l'ai figuré dehors). En conséquence, je continue à obtenir la vue complète à l'intérieur de la div ciblée.
Je crois que j'ai RC1 installé sur ma machine de développement (je sais que je n'ai pas mis à jour à RC2). De plus, il n'y a pas de comportement RedirectToActions ou de type de redirection se produisant dans le code omis, juste quelques appels de couche service. – MunkiPhD