Pregunta

Yo tengo un Ajax.ActionLink dentro de una PartialView al igual que:

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

Y la función de manejo de JavaScript (declarada en línea en la vista principal por ahora):

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

Lo que arroja un error de JavaScript:

Object# has not definition for get_object().

Pensé que estos métodos de JavaScript eran parte de la MicrosoftAjax.js / MicrosoftMvcAjax.js Scripts, los cuales he incluido en mi página.

¿Alguien puede confirmar qué biblioteca están presentes estos métodos auxiliares?

Cargo los scripts requeridos en mi Layout.cshtml Archivo, luego hago una llamada AJAX para representar la vista parcial anterior.

Entonces, para cuando manejo esa función, las bibliotecas ya están cargadas, por lo que estoy confundido.

¿Algunas ideas?

¿Fue útil?

Solución

Parece que estás usando ASP.NET MVC 3 y Razor. En esta versión, JQuery es el marco de secuencia de comandos de cliente predeterminado. No más MicrosoftAjax.js (gracias a Dios). Asi que:

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

Tampoco olvides incluir jquery.unobtrusive-ajax.js.

Si desea utilizar las cosas heredadas que podría configurar lo siguiente en su web.config:

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

Por defecto, esta variable se establece en True.

Personalmente, prefiero usar enlaces estándar:

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

y AJAXIFifys usando jQuery en un archivo JavaScript separado:

$(function() {
    $('#myLink').click(function() {
        $.post(this.href, function(result) {
            // result is already a javascript object, no need to eval
        });
        return false;
    });
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top