2010-06-17 16 views
6

Estoy tratando de navegar a una acción MVC mediante POSTING en lugar de GETting. (La acción es un DELETE, y no quiero que se puede llegar en un enlace externo.)Ajax.ActionLink no está PUBLIENDO

estoy usando un enlace en una cuadrícula generada por

Ajax.ActionLink("Remove", "Delete", new { saID = Model.Said, id = e.id }, new AjaxOptions { HttpMethod = "POST", Confirm = "Are you sure you want to delete this item?" }) 

que genera el código HTML siguiente:

<a href="/Equipment/Delete/102424/229933" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, confirm: 'Are you sure you want to delete this item?', httpMethod: 'POST' });">Remove</a> 

Mi problema es que cuando hago clic en el enlace, estoy llegando a la acción Eliminar a través de un GET en lugar de una POST, Y el cuadro de diálogo Confirmar no está teniendo lugar. He estado buscando en Google esto por varias horas y me sigo envolviendo alrededor del eje. ¿Qué estoy haciendo mal?

Respuesta

6

Es probable que tenga algún otro error de javascript en su página que impida que se ejecute el javascript que maneja el AJAX POST. En este caso, el enlace vuelve a su comportamiento predeterminado (GET). Lo más fácil es usar las herramientas de desarrollador de IE8 o Firefox/Firebug (prefiero estas) y ver si tiene algún error en la consola cuando se carga la página o se invoca su acción. Si está utilizando IE, necesitará usar Internet Options -> Advanced y desmarcar Disable script debugging.

Solucione el error de javascript y creo que simplemente comenzará a funcionar.

+1

Su derecho: Estoy recibiendo "Sys.Mvc" no está definido - a pesar de que he incluido los tres de los archivos de script JS en mi MasterPage (MicrosoftAjax, MicrosoftMvcAjax y jquery-1.4.1-vsdoc) ¿Qué más debo hacer para configurar Sys.Mvc? –

+0

@Dave: ¿los está incluyendo en ese orden? 'Sys.Mvc' se define en MicrosoftMvcAjax.js pero lo hace llamando a un método de MicrosoftAjax.js – tvanfosson

+0

Ese parece ser el problema. Cuando enganché el violín, solo se cargaba el primero (MicrosoftAjax.js) de los tres archivos de script. Lo arreglé para que se cargara MicrosoftMvcAjax.js (que contiene la definición de Sys.Mvc) y se despegó y ejecutó, bueno, entonces. Recibo el cuadro de confirmación ahora, pero no obtengo mi formulario de eliminación. Pero lo investigaré mañana. –

5

que quería añadir esto como un comentario a la respuesta aceptada pero de alguna manera no hay ninguna opción de entrar en esto como un comentario por lo que añadir esto como respuesta

En mi caso, he tenido que añadir "jquery.unobtrusive-ajax .min.js "antes de MicrosoftAjax.js y MicrosoftMvcAjax.js y luego el enlace de acción comenzó iniciando una solicitud de javascript. Pero esto era un GET y quería publicar, así que solo agregué HttpMethod = "Post" en 'AjaxOptions`. Eso fue todo.

Cuestiones relacionadas