¿es posible tener 2 acciones con el mismo nombre y parámetros pero una es una publicación, la otra una obtención? por ejemplo, Delete(id)
y [HttpPost]Delete(id)
... me sale un error que dice que esto no está permitido ...¿Es posible tener nombres de acciones y listas de parámetros duplicados para publicar y obtener?
Respuesta
Sí, es posible. Sólo tiene que utilizar ActionName atributo en una acción:
public ActionResult Delete(int id)
{
//...
return View();
}
[HttpPost]
[ActionName("Delete")]
public ActionResult Delete_Post(int id)
{
//...
return View();
}
La razón se obtiene el error que no está permitido es porque C# sí se confunde. Mientras estés en MVC puedes agregar atributos para especificar si una función es HttpGet o HttpPost, eso no ayuda a C# a determinar la diferencia entre uno u otro. Para tener 2 funciones con exactamente el mismo nombre, la lista de parámetros debe ser diferente.
Como frennky señaló, el atributo ActionName funciona en MVC porque MVC usa alias como parte del proceso para determinar qué acción llamar (junto con los atributos, pero no los parámetros).
Como nota al margen, es mejor no tener una acción Eliminar en una solicitud GET. Usted no quiere que un rastreador u otro bot accidentalmente golpee el enlace equivocado: P
- 1. entonces en Java no puede tener nombres de métodos duplicados con devolución y params diferentes?
- 2. ¿Es posible tener validadores con parámetros?
- 3. Comparar dos listas genéricas y eliminar duplicados
- 4. Ajax tutorial para publicar y obtener
- 5. T4MVC y nombres de controlador duplicados en diferentes áreas
- 6. NUnit y TestCaseAttribute, ¿es posible la combinación cruzada de parámetros?
- 7. ¿Es posible tener CDT y Java IDE juntos en Eclipse?
- 8. Combinación de dos listas y eliminación de duplicados, sin eliminar duplicados en la lista original
- 9. ¿Puedo usar nombres idénticos para campos y parámetros de constructor?
- 10. Arquitectura, muchos métodos y largas listas de parámetros
- 11. es posible obtener la lista de espacios de nombres definidos
- 12. ¿Es posible obtener los nombres y valores de los miembros de una enumeración en D?
- 13. JSF 2 y Publicar/Redirigir/Obtener?
- 14. ¿Es posible usar Uri.Builder y no tener la parte "//"?
- 15. Lisas listas de los nombres comunes para computadora
- 16. C# obtener y establecer propiedades para una colección de listas
- 17. ¿Es posible tener demasiados métodos en términos de tamaño de pila y posible desbordamiento?
- 18. publicar y obtener con el mismo método firma
- 19. ¿Es posible tener una llamada a un método dinámico para valores de parámetros predeterminados en Ruby?
- 20. ¿Es posible obtener ventanas activas y nombres ejecutables en X11/Xlib?
- 21. CSS: ¿es posible obtener el "valor" actual y "agregarlo"?
- 22. Contar duplicados entre 2 listas
- 23. Combinar dos listas sin duplicados
- 24. XPath para obtener nombres de elementos únicos
- 25. LLVM Nombres y parámetros de las variables de instrucción
- 26. Enrutamiento MVC - Pregunta de nombres de parámetros
- 27. Django - Permitir nombres de usuario duplicados
- 28. Filtrado y transformación de listas de Python
- 29. ¿Es posible tener nombres de clases clicables en la salida de la consola en IntelliJ?
- 30. Envío de varios parámetros para acciones en ASP.NET MVC
Gracias, no entendí por qué esto fue rechazado inicialmente, ya que es una pregunta muy válida. He leído que algunas personas recomiendan que debe pasar un parámetro aleatorio o FormCollection, pero eso parece exagerado. Esto suena como una mejor manera de hacerlo. ¡Muy apreciado! –
solo una pregunta ... ¿por qué mvc no permite 2 acciones con la misma firma? Creo que es porque el controlador no sabría a qué acción llamar, pero seguramente con el HttpPost esto no sería un problema. –
Esto no está relacionado con MVC. Según la especificación C#, la firma de un método debe ser única en una clase en la que se declara. Si lo piensas, si no hay atributos, ¿cómo los distinguirías? – frennky