¿Cómo es que puedo crear un método en el controlador y poner algunos argumentos y resolverlo luego de hacer clic en el envío de un formulario? Bajo el capó, ¿cómo encuentra el método correcto y cómo se da cuenta de que solo quiero esos argumentos?¿Cómo lo soluciona asp.net mvc?
Respuesta
En pocas palabras:
El motor de enrutamiento se encarga de la HttpRequest, y se comprueba la dirección URL solicitada. Cuando encuentra la primera coincidencia de ruta, crea una nueva instancia de
MvcRouteHandler
y le pasa los tokens fragmentados de la URL en un RouteValueDictionary.La ruta
MvcRouteHandler
toma la solicitud e intenta crear una instancia de clase de controlador. Por convención, busca una clase llamada "XXXXXXController", donde las X se reemplazan por el parámetro {controller} en la ruta.Una vez que encuentra el controlador, invoca el método apropiado en él, dado por el parámetro {acción} de la ruta. Cualquier argumento con nombre, como {id}, que exista en la ruta, se pasa como parámetros al método.
Básicamente, todo lo que ASP.Net MVC "conoce" proviene de la información de la ruta. No puede adivinar los parámetros desde el aire: deben provenir del análisis de la ruta. Si la información no está presente en la URL solicitada, no se puede pasar al método.
También se debe tener en cuenta que puede anular el comportamiento del marco haciendo que las rutas utilicen controladores alternativos en lugar de MvcRouteHandler
. El marco es bastante extensible, por lo que puede conectar funcionalidad personalizada en muchos puntos.
Hay un poco de código en juego para el controlador, la acción y la resolución de la vista, así como los ModelBinders. Tanto que probablemente sea mejor para usted buscar partes específicas del marco y hacer una pregunta más detallada para obtener una buena respuesta.
Afortunadamente, el ASP.NET MVC framework has been open-sourced, por lo que si tiene curiosidad sobre cómo funciona todo, puede get the code y revisarlo usted mismo. Es un código excelente para leer y seguramente aprenderá algo.
Más al punto de su pregunta, sin embargo, debe consultar las clases System.Web.Mvc.MvcHandler y System.Web.Mvc.ControllerActionInvoker, que deben guiarlo por el camino correcto para responder sus preguntas.
- 1. Temas Asp.Net MVC, ¿cómo?
- 2. ASP.NET MVC - ¿Cómo explicarlo?
- 3. ¿Qué soluciona LDAP?
- 4. ASP.NET MVC - ¿Cómo redireccionar seguro?
- 5. ¿Cómo funciona Url.Action Asp.net MVC?
- 6. ¿Por qué AspNetCompatibilityRequirementsMode.Allowed soluciona este error?
- 7. ASP.NET MVP vs ASP.NET MVC
- 8. ASP.NET MVC 4 rompe ASP.NET MVC 3 proyectos
- 9. ASP.NET MVC + Backbone.js, ¿tiene sentido esto? ¿ASP.NET MVC realmente necesario?
- 10. ASP.NET MVC: Controlador simulado.Url.Action
- 11. ¿Cómo se soluciona el "error de compilación" 'System.Security.Permissions.SecurityAction.RequestMinimum' obsoleto '?
- 12. ASP.NET MVC vs Spring MVC
- 13. ¿Cómo hago lo CONTRARIO de [RequireHttps (Redirect = true)] en ASP.NET MVC
- 14. conexiones rancio, validationQuery no soluciona
- 15. JXL soluciona el problema #VALOR
- 16. ¿Lo último en arquitectura MVC?
- 17. asp.net mvc - subcarpetas
- 18. ASP.NET MVC vs. ASP.NET 4.0
- 19. ASP.Net MVC vs ASP.Net Formularios
- 20. Asp.net MVC Visible/ocultar
- 21. asp.net carpeta mvc app_data
- 22. Repositorio genérico ASP.NET MVC
- 23. ASP.NET MVC en IIS6
- 24. ASP.NET MVC Arquitectura
- 25. Asp.net MVC View Testing?
- 26. asp.net mvc FileStreamResult
- 27. ASP.NET MVC Razor concatenación
- 28. ASP.Net MVC View Structure
- 29. ASP.NET MVC Formulario repoblación
- 30. ASP.NET MVC Autorización
De la ruta o la colección del campo de formulario. – GalacticCowboy
La colección de campos de formulario viene junto con la solicitud, pero no afecta cómo ASP.Net MVC lo resuelve. El formulario se publica en una URL determinada (por lo general, en el mismo controlador que generó la vista) y el motor de enrutamiento maneja esa URL. – womp