Question

J'ai un Ajax.ActionLink dans un PartialView comme ceci:

@Ajax.ActionLink(Model.IsVisible ? "Disable" : "Enable", "ToggleVisibility", "Review", new { area = "Admin", id = Model.Id }, new AjaxOptions { HttpMethod = "POST", OnComplete = "onComplete_AdminReviewOption" })

Et la fonction JavaScript de manutention (déclarée sur l'écran principal pour l'instant en ligne):

function onComplete_AdminReviewOption(ajaxContext) {
    var jsonObject = ajaxContext.get_object();
}

Ce qui renvoie une erreur javascript:

Object# has not definition for get_object().

Je pensais que ces méthodes JavaScript faisaient partie des MicrosoftAjax.js / scripts MicrosoftMvcAjax.js, les deux que j'ai inclus sur ma page.

Quelqu'un peut-il confirmer quelle bibliothèque ces méthodes d'assistance sont présents?

Je charge les scripts nécessaires dans mon fichier Layout.cshtml, alors je fais un appel AJAX pour rendre le dessus PartialView.

Le temps que je manipule cette fonction, les bibliothèques déjà chargées -. Ce qui est la raison pour laquelle im confus

Toutes les idées?

Était-ce utile?

La solution

Il semble que vous utilisez ASP.NET MVC 3 et Razor. Dans cette version jQuery est le cadre de script client par défaut. Plus MicrosoftAjax.js (Dieu merci). Donc:

function onComplete_AdminReviewOption(ajaxContext) {
    var jsonObject = eval(ajaxContext);
}

De plus, ne pas oublier d'inclure jquery.unobtrusive-ajax.js.

Si vous voulez utiliser les trucs de l'héritage que vous pourriez en réglant les éléments suivants dans votre web.config:

<add key="UnobtrusiveJavaScriptEnabled" value="false" />

Par défaut, cette variable est définie sur true.

Personnellement, je préfère utiliser des liens standards:

@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" }
)

et AJAXify les utiliser jQuery dans un fichier JavaScript distinct:

$(function() {
    $('#myLink').click(function() {
        $.post(this.href, function(result) {
            // result is already a javascript object, no need to eval
        });
        return false;
    });
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top