Problem mit Ajax.ActionLink Ajaxoptions -Rückrufe (ASP.NET MVC 3)
-
22-10-2019 - |
Frage
ich habe ein Ajax.ActionLink
in einem PartialView
Like SO:
@Ajax.ActionLink(Model.IsVisible ? "Disable" : "Enable", "ToggleVisibility", "Review", new { area = "Admin", id = Model.Id }, new AjaxOptions { HttpMethod = "POST", OnComplete = "onComplete_AdminReviewOption" })
Und die JavaScript-Funktion des Handlings (vorerst in der Hauptansicht in einer Leitung deklariert):
function onComplete_AdminReviewOption(ajaxContext) {
var jsonObject = ajaxContext.get_object();
}
Dies wirft einen JavaScript -Fehler aus:
Object# has not definition for get_object()
.
Ich dachte, diese JavaScript -Methoden waren Teil der MicrosoftAjax.js
/ MicrosoftMvcAjax.js
Skripte, die ich beide auf meiner Seite aufgenommen habe.
Kann jemand bestätigen, welche Bibliothek diese Helfermethoden vorhanden sind?
Ich lade die erforderlichen Skripte in meinem Layout.cshtml
Datei, dann mache ich einen Ajax -Anruf, um die obige Teilansicht zu rendern.
Wenn ich diese Funktion bewältige, sind die Bibliotheken bereits geladen - weshalb ich verwirrt bin.
Irgendwelche Ideen?
Lösung
Es sieht so aus, als würden Sie ASP.NET MVC 3 und Rasiermesser verwenden. In dieser Version befindet sich JQuery das Standard -Client -Scripting -Framework. Nicht mehr MicrosoftAjax.js
(Gott sei Dank). So:
function onComplete_AdminReviewOption(ajaxContext) {
var jsonObject = eval(ajaxContext);
}
Vergessen Sie auch nicht, einzubeziehen jquery.unobtrusive-ajax.js
.
Wenn Sie die älteren Dinge verwenden möchten, die Sie in Ihrem Web.config einstellen können:
<add key="UnobtrusiveJavaScriptEnabled" value="false" />
Standardmäßig ist diese Variable auf true festgelegt.
Persönlich bevorzuge ich Standard -Links:
@Html.ActionLink(
Model.IsVisible ? "Disable" : "Enable", // <-- this should probably be as a property directly in the view model, ex. Model.LinkText
"ToggleVisibility",
"Review",
new { area = "Admin", id = Model.Id },
new { id = "myLink" }
)
und ajaxify sie mit JQuery in einer separaten JavaScript -Datei:
$(function() {
$('#myLink').click(function() {
$.post(this.href, function(result) {
// result is already a javascript object, no need to eval
});
return false;
});
});