2012-01-12 21 views
7

Me gustaría usar el método HTTP apropiado cuando sea posible. En este caso, cuando se hace clic en un botón para eliminar algo, deseo activar la acción del controlador con el atributo [HttpDelete]. Sin embargo, no puedo crear un formulario con este método, usando la sintaxis de Razor. La enumeración FormMethod no tiene una opción para Delete y haciendo lo siguiente no anula que:Utilice el método de formulario DELETE en Html.BeginForm()?

@using (Html.BeginForm("Order", "Users", FormMethod.Post, new { method = "DELETE" })) 

la búsqueda de soluciones rendimientos ninguno, nadie está haciendo esto? Sé que puedo usar POST, pero ¿no es este el punto del método de eliminación HTTP para empezar?

+0

Joeri Jans es correcta. En MVC, debe engañar al método de acción para que piense que POST es DELETE (o PUT). – danludwig

Respuesta

20

Usted necesita esto en su formulario:

@using (Html.BeginForm("Order", "Users"){ 
    @Html.HttpMethodOverride(HttpVerbs.Delete) 
} 
+2

Información adicional: La especificación HTML no permite nada más que "obtener" o "publicar" como el método para formularios, por lo que MVC debe verificar la entrada oculta que crea HttpMethodOverride y luego suponer que se envió este verbo. –

+0

Gracias JoJa. Christian, si no está en la especificación HTML entonces supongo que debería seguir con POST ...? –

+0

La especificación HTML5 admite DELETE y PUT – Betty

Cuestiones relacionadas