¿Es posible forzar un @Html.ActionLink()
para hacer un POST
en lugar de un GET
? ¿Si es así, cómo?ASP.NET MVC 3: ¿Cómo forzar a un ActionLink a hacer un HttpPost en lugar de un HttpGet?
Respuesta
ActionLink
método de ayuda representará una etiqueta anchor
, haciendo clic en lo que siempre es una solicitud GET
. Si desea hacer una solicitud POST
.Debe reemplazar el behviour por defecto con un poco de javacsript
@ActionLink("Delete","Delete","Item",new {@id=4},new { @class="postLink"})
Ahora algunos jQuery
código
<script type="text/javascript">
$(function(){
$("a.postLink").click(function(e){
e.preventDefault();
$.post($(this).attr("href"),function(data){
// got the result in data variable. do whatever you want now
//may be reload the page
});
});
});
</script>
Asegúrese de que tiene un método de HttpPost
tipo Action
manejar esta solicitud
[HttpPost]
public ActionResult Delete(int id)
{
// do something awesome here and return something
}
Lo que me gustaría hacer es envolver su html alrededor de una forma
@using(Html.BeginForm("YourAction","YourController", FormMethod.Post)){
<button>Hello</button>
}
En lugar de utilizar un enlace es posible que desee utilizar un botón.
Si realmente desea usar un enlace, es posible que tenga algo de JavaScript
Algo como esto:
$("#idOfYourLink").click(function(){
var form = $(this).parents('form:first');
form.submit();
});
Si cree ... no hay ninguna etiqueta de enlace en HTML que hace un ENVIAR. Y es por eso que no puedes forzar un enlace para hacer un POST (y no tiene ningún sentido). Para usar "POST", debe "enviar" algo. Y ese algo debe ser una forma, o puede hacer una POST utilizando una función de JavaScript para AJAX. De todos modos, si necesita enviar por correo sin publicar nada, debe revisar su modelo de recursos, algo huele mal.
Esto es realmente bastante común y perfectamente aceptable en la comunidad de Rails, por ejemplo, como una forma de objetos lete. – wgpubs
No es posible tener un elemento <a>
realizar una POST a un servidor web.
Puede usar Javascript para capturar el evento de clic, detener la navegación y realizar una POST de AJAX en el servidor, pero si el usuario tiene el Javascript deshabilitado no sucederá nada.
¿Tiene que usar un elemento <a>
, o simplemente algo que se asemeja a un elemento <a>
?
También vale la pena mencionar es echar un vistazo a AjaxLink
. Le permite usar fácilmente un elemento <a>
para realizar una POST AJAX.
Supongo que si necesita algo así es para una acción que hará algo "permanente" en el lado del servidor. Por ejemplo, eliminar un objeto en la base de datos.
Aquí es un ejemplo completo de hacer una supresión mediante un enlace y aviso: http://www.squarewidget.com/Delete-Like-a-Rock-Star-with-MVC3-Ajax-and-jQuery
Desde el anterior enlace (recomendado la lectura de todos modos):
Un enlace borrar en su opinión:
@Ajax.ActionLink("Delete", "Delete", "Widget",
new {id = item.Id},
new AjaxOptions {
HttpMethod = "POST",
Confirm = "Are you sure you want to delete this widget?",
OnSuccess = "deleteConfirmation"
})
Un poco de JS:
function deleteConfirmation(response, status, data) {
// remove the row from the table
var rowId = "#widget-id-" + response.id;
$('.widgets').find(rowId).remove();
// display a status message with highlight
$('#actionMessage').text(response.message);
$('#actionMessage').effect("highlight", {}, 3000);
}
- 1. asp.net mvc - [HttpPost/HttpGet] vs [AcceptVerbs (HttpVerbs.Post/Get)]
- 2. ¿Cómo creo un httppost obteniendo los mismos parámetros de httpget?
- 3. ASP.NET MVC agregar clase css a actionlink
- 4. ASP.NET MVC pasar un ID en una ActionLink al controlador
- 5. Creación de un ActionLink con un DateTime en la cadena de consulta en ASP.NET MVC
- 6. ASP.NET MVC: AJAX ActionLink: segmentar un atributo HTML
- 7. ASP.NET MVC 3, cómo hacer temas bien
- 8. ASP.NET MVC 3 Uno-A-Muchos Formulario
- 9. ¿Cómo vuelvo a autenticar a un usuario en una aplicación ASP.Net MVC 3 _Intranet_?
- 10. ¿Cómo enviar un correo electrónico desde Asp.net Mvc-3?
- 11. alternativa a ViewBag.Title en ASP.NET MVC 3
- 12. ActionLink fuertemente tipado en Asp.Net MVC 2?
- 13. actionlink fuertemente tipado con asp.net mvc beta?
- 14. ASP.NET MVC Enlace a un diccionario
- 15. ASP.NET MVC ActionLink fuera del área
- 16. Agregue un archivo .asmx a asp.net MVC?
- 17. Hacer un Html.ActionLink alrededor de una imagen en ASP.NET MVC?
- 18. Cómo deshabilitar la validación en una acción HttpPost en ASP.NET MVC 3?
- 19. ¿Puede jQuery hacer una POST de un ViewModel a un controlador en ASP.NET MVC?
- 20. Entity Framework 4.1 - ¿Cómo "forzar" a EF a ir a DB en lugar de usar Graph?
- 21. MVC 3 -ASP.NET Redirigir a vista diferente
- 22. ¿Cómo hacer trabajos en segundo plano en un sitio ASP.NET MVC 3?
- 23. ASP.NET MVC 3: Adjuntar a las secciones
- 24. Conversión de un proyecto de ASP.NET MVC 3 a MVC 4
- 25. ASP.NET MVC: Enlace de un tipo complejo a un Seleccionar
- 26. ¿Cómo puedo hacer referencia a una vista maestra en un proyecto diferente en ASP.NET MVC?
- 27. ¿Cómo accedo a Request.cookies en un controlador ASP.NET MVC?
- 28. ¿Cómo redirecciono a un usuario a una página 404 personalizada en ASP.NET MVC en lugar de lanzar una excepción?
- 29. ActionButton en lugar de ActionLink
- 30. ASP.NET MVC ActionLink con LinkText = URL absoluta
No se no pueden ser solo para OBTENER – VJAI