Domanda

Ho un Ajax.ActionLink all'interno di un PartialView in questo modo:

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

E la funzione JavaScript movimentazione (dichiarata in-line sul principale View per ora):

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

Il che genera un errore di javascript:

Object# has not definition for get_object().

ho pensato questi metodi JavaScript facevano parte degli script MicrosoftAjax.js / MicrosoftMvcAjax.js, entrambi i quali ho inserito nella mia pagina.

Qualcuno può confermare quale libreria questi metodi di supporto sono presenti?

passo per caricare gli script necessari nel mio file Layout.cshtml, poi faccio una chiamata AJAX per rendere il sopra PartialView.

Quindi, per il momento mi occupo di quella funzione, le librerie sono già caricati -. Che è il motivo per im confuso

Tutte le idee?

È stato utile?

Soluzione

Sembra che si sta utilizzando ASP.NET MVC 3 e Razor. In questa versione jQuery è il quadro del client di script predefinito. Non più MicrosoftAjax.js (grazie a Dio). Quindi:

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

Inoltre, non dimenticare di includere jquery.unobtrusive-ajax.js.

Se si desidera utilizzare la roba legacy si potrebbe impostando la seguente nel web.config:

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

Per impostazione predefinita, questa variabile è impostata su true.

Personalmente preferisco utilizzare collegamenti standard:

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

e AJAXify utilizzando jQuery in un file JavaScript distinto:

$(function() {
    $('#myLink').click(function() {
        $.post(this.href, function(result) {
            // result is already a javascript object, no need to eval
        });
        return false;
    });
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top