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?

War es hilfreich?

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;
    });
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top