MVC-3 Ajax.ActionLink nicht funktioniert
Ich bin Herumspielen mit der einige MvcMusicStore Beispiel shop und habe einige Probleme mit dem MVC3 Ajax.ActionLink /Ajax.RouteLink Helfer. Das problem ist, dass es einfach nicht erzeugen einer Ajax-Anfrage (Request.IsAjaxRequest() == false). Die Formen, ich bin der Generierung mit Hilfe des Ajax.BeginForm /Ajax.BeginRouteForm sind schön funktioniert aber.
Config:
<appSettings>
<add key="ClientValidationEnabled"
value="true"/>
<add key="UnobtrusiveJavaScriptEnabled"
value="true"/>
</appSettings>
Scripts:
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
Link:
@Ajax.ActionLink("show cart", "Show", "Cart", new AjaxOptions() { OnSuccess = "handleSuccess", HttpMethod = "Get", OnFailure = "handleFailure" })
Generieren HTML:
<a data-ajax="true" data-ajax-failure="handleFailure" data-ajax-method="Get" data-ajax-success="handleSuccess" href="/Cart/Show">show cart</a>
Wie gesagt, das funktioniert gut:
@using (Ajax.BeginForm(
"Show",
new { controller = "Cart" },
new AjaxOptions
{
OnSuccess = "handleSuccess",
OnFailure = "handleFailure"
}))
{
<input type="submit" class="button" />
}
Die Aktion sieht wie folgt aus:
[Authorize]
public ActionResult Show()
{
if (Request.IsAjaxRequest())
{
ViewBag.CartItems = ShoppingCart.GetCart(this)
.Items;
return Json(new AjaxResultViewModel()
{
Content = RenderPartialViewToString(),
UpdateTargetSelector = "#dialog",
InsertionMode = InsertionMode.InsertBefore
}, JsonRequestBehavior.AllowGet);
}
ViewBag.Exception = new NotSupportedException();
return View("Error");
}
Ich habe gesucht, für eine Weile jetzt, und nicht finden konnte, der Grund für dieses Verhalten, vielleicht könnte jemand mir helfen?
Beste Grüße!
InformationsquelleAutor malice | 2011-05-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
In ein neues MVC4 Template auf der
_layout.cshtml
in der Nähe der Unterseite, es ist ein@Scripts.Render("~/bundles/jquery")
.Hatte ich zu zählen
@Scripts.Render("~/bundles/jqueryval")
ist die Ajax BibliothekDiese behoben, das problem hatte ich mit einem vollständigen postback mit der index-Seite. Meine link-code:
Ich kenn das als Antwort, da es scheint, das problem zu lösen, obwohl es schon eine Weile (und einer früheren version) und ich kann das nicht testen, es nicht mehr.
+1: gut gemacht. Dies ist der Startschuss für meine Ajax.ActionLink (die aus keinem anderen Grund wurde nicht gefeuert)
InformationsquelleAutor Omgee Cares
Habe ich es zu arbeiten, indem er die folgenden Skripte exakt in dieser Reihenfolge:
Der Vollständigkeit halber, in meinem *_Layout.cshtml* Datei ich erklärte, die folgenden:
InformationsquelleAutor hemme
Vielleicht [ dieser Beitrag ] hat die Antwort.
Kurz: die js-Funktionen "handleSuccess" und "handleFailure" zugänglich von der form?
Lg
warappa
Außerdem: ich habe bereits zu wissen, das Verhalten beschrieben in Ihrem Beitrag auf die harte Weise. Aber ich bin ganz sicher, da die 2 test-links generiert werden, an der gleichen Stelle im html-Format. Die erste Zeile schlägt fehl, der zweite gelingt. seltsam 😉 <a data-ajax="true" data-ajax-Fehler="handleFailure" data-ajax - success="handleSuccess" href="/Warenkorb/Anzeigen">Warenkorb Zeigen</a> <form action="/Warenkorb/Anzeigen" data-ajax="true" data-ajax - Fehler="handleFailure" data-ajax-success="handleSuccess" id="form0" method="post"><a href="javascript:void(0)" id="show cart">Warenkorb zeigen</a> </form>
InformationsquelleAutor David Rettenbacher