asp.net-mvc - paginacion - select asp-for
Módulo HTTP vs filtro de acción en asp.net-mvc (3)
Los filtros son el enfoque de MVC de hacer algo, mientras que el módulo Http es más una forma de hacer cosas de ASP.NET. Ambos tienen un propósito similar al proporcionar un gancho en la tubería de procesamiento.
HttpModule es más genérico y cuando desea que algo sea procesado en cada solicitud. Los filtros son útiles para agregar comportamiento específico de acción.
Si desea que algo se ejecute solo una vez por solicitud de Http, debe usar un HttpModule. ActionFilter puede ejecutarse varias veces durante una solicitud hasta y a menos que marque IsChildActionOn.
Estoy desarrollando una aplicación en asp.net MVC3 y tengo las siguientes preguntas: ¿Cuándo debo escribir un módulo HTTP y cuándo debo escribir un filtro de acción?
Se llama a HttpModule antes y después de que se ejecute el controlador de solicitudes. Su objetivo es permitir que un desarrollador intercepte, participe o modifique cada solicitud. Hay 22 eventos disponibles a los que se puede suscribir que permiten que el módulo trabaje en la solicitud en varias etapas del proceso. Los eventos son útiles para los desarrolladores de páginas que desean ejecutar código cuando se generan eventos de canalización de solicitud clave. También son útiles si está desarrollando un módulo personalizado y desea que se invoque el módulo para todas las solicitudes a la canalización.
Los filtros están diseñados para inyectar la lógica entre el ciclo de vida de solicitud MVC. Específicamente, antes y después de invocar la acción, así como, antes y después de procesar el resultado. Los filtros brindan a los usuarios poderosas formas de inspeccionar, analizar, capturar e instrumentar varias cosas dentro de los proyectos MVC. A partir de MVC5, hay 5 tipos de filtros:
- Autenticación
- Autorización
- Acción
- Resultado
- Excepción
Entonces, si desea interceptar, participar o modificar en uno de los 22 eventos en el canal de solicitud http, elija los módulos . Si su lógica está estrictamente relacionada con el método de acción, es mejor que el servidor reemplace uno de los siguientes métodos ActionFilterAttribute:
- OnActionExecuting
- OnActionExecutted
- OnResultExecuting
- OnResultEjecutado
HttpModule es cómo IIS permite que una aplicación web anule el comportamiento predeterminado o agregue lógica personalizada permitiéndole adjuntar controladores de eventos a eventos HttpApplication . Los diferentes modos de IIS (integrado o clásico) incluso tienen diferentes configuraciones de configuración de Web.config.
Referencia:
http://msdn.microsoft.com/en-us/library/ms227673(v=vs.100).aspx
Ejemplo: redireccionar URL que no sean www a www
public void Init(HttpApplication application)
{
application.PreRequestHandlerExecute += this.Application_PreRequestHandlerExecute;
}
private void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
Uri requestUrl = HttpContext.Current.Request.Url;
string host = requestUrl.Authority.ToLower();
if (!host.StartsWith("www"))
{
HttpContext.Current.Response.Redirect(requestUrl.Scheme + "://www." + host + requestUrl.PathAndQuery);
HttpContext.Current.Response.End();
}
}
Un filtro de acción es un atributo que adorna los controladores o los métodos de acción. Es una capa de abstracción entre el enrutamiento MVC y los métodos de acción. Con los filtros de acción, podemos aplicar la misma lógica a varios controladores o métodos de acción. por ejemplo, el registro personalizado.