2011-02-02 22 views
8

Para el siguiente:MVC3 Ajax.ActionLink

@Ajax.ActionLink("Delete", "Delete", "AdminGroup", new { id = item.AdminGroupId }, new AjaxOptions { Confirm = "Delete?", HttpMethod = "Delete", OnSuccess = "function() { $(this).parent().parent().remove() }" }) 

get onSuccess de salir con errores. por favor ayuda. gracias

Respuesta

23

Debería ser así:

@Ajax.ActionLink(
    "Delete", 
    "Delete", 
    "AdminGroup", 
    new { id = item.AdminGroupId }, 
    new AjaxOptions { 
     Confirm = "Delete?", 
     HttpMethod = "Delete", 
     OnSuccess = "handleSuccess" 
    } 
) 

donde se tiene:

<script type="text/javascript"> 
function handleSuccess() { 
    // TODO: handle the success 
    // be careful because $(this) won't be 
    // what you think it is in this callback. 
} 
</script> 

Aquí es una solución alternativa que os recomiendo:

@Html.ActionLink(
    "Delete", 
    "Delete", 
    "AdminGroup", 
    new { id = item.AdminGroupId }, 
    new { id = "delete" } 
) 

y luego en una se .. Parate archivo javascript AJAXify el enlace:

$(function() { 
    $('#delete').click(function() { 
     if (confirm('Delete?')) { 
      var $link = $(this); 
      $.ajax({ 
       url: this.href, 
       type: 'DELETE', 
       success: function(result) { 
        $link.parent().parent().remove(); 
       } 
      }); 
     } 
     return false; 
    }); 
}); 
+0

todos modos hay que devolver este $ (this) .parent"() padre() remove(); : desde el controlador y ejecutarlo? – ShaneKm

+0

@Shane, en su controlador podría 'devolver JavaScript (" $ (esto) .parent(). Parent(). Remove(); ");' pero tenga cuidado porque '$ (this)' podría no apuntar a qué podrías esperar Personalmente, no quisiera que el controlador devuelva javascript. Lo manejaría en la devolución de llamada de éxito. –

+0

@Darin, ¿debería pensar que Darin no recomienda Ajax.ActionLink? gracias –

Cuestiones relacionadas