Tyni Post – VS2013 Map code for vertical scrollbar

Una de las features que trae Visual Studio 2013 y que varios veníamos pidiendo desde hace tiempo es la vista previa del código – Map Code – en la barra de scroll vertical (característica que trae Sublime Text desde hace mucho tiempo).

Para activar esta característica debemos hacer click derecho sobre la barra de scroll y hacer check en “Scroll Bar Options” >> “Use map code for vertical scrollbar“.

Scroll Bar Options

Scroll Bar Options

Realizado esto ya podemos hacer uso de la vista previa del código, incluyendo referencias a los puntos de interrupción, marcadores y cambios en el código:

Map code for vertical scrollbar

Map code for vertical scrollbar

De los marcadores el rojo indica un error, el amarillo un cambió en el código y el verde los últimos cambios realizados. Otra característica que ofrece es que si nos posicionamos arriba de la vista previa, aparecerá una ampliación del código en dicha posición:

Zoom y bookmarks

Zoom y bookmarks

Espero que les sea de utilidad!

ASP-NET MVC 5 – Filter Overrides

Como muchos ya sabrán, hasta la salida de ASP.NET MVC 5, no había forma de anular los filtros de acción en un controlador o acción en particular (cuestión que se hace más evidente cuando trabajamos con filtros globales). Por lo tanto cuando tenemos que hacer este tipo de excepciones no queda otra alternativa que quitar el filtro de la acción y/o controlador a omitir e ir aplicando los filtros en el resto de las acciones y/o controladores de manera individual.

Una de las nuevas features que trae ASP.NET MVC 5 es la de Filter Overrides. Esta característica nos permite anular filtros que se aplican sobre un método de acción o controlador. Estos filtros se denominan  “filtros de anulación” y a continuación veremos como implementarlos.

Importante! Respecto de está característica se ha encontrado un error en MVC5, se registro en MVC5 RC y se ha aplicado el fix en la version MVC 5.1. Veremos como aplicarlo de la manera “oficial” y una forma alternativa para quienes sigan usando MVC5.

Veamos un ejemplo. Supongamos que tenemos un filtro de autorización – Authorize filter – que aplica de forma global a un controlador y queremos anularlo en una acción en particular (en este ejemplo la acción sería About). Hasta la salida de esta nueva versión, la solución no era tan directa, pero con MVC5 podemos realizar esta tarea de una manera muy sencilla:

Implementando el atributo OverrideAuthorization

Implementando el atributo OverrideAuthorization

Si observan el código por un lado podrán ver que hemos decorado del AdminController con el atributo de autorización el cual aplica a todos los métodos de acción del mismo. Para anular este comportamiento simplemente debemos decorar la/s acciones con el atributo [OverrideAuthorization]. Además de anular este filtro podemos agregar nuevos (en el ejemplo autorizaríamos al usuario “Sebis” a esta vista).

Simple, no?

Actualmente el framework nos proporciona 5 tipos de filtros de anulación:

  • OverrideActionFilters
  • OverrideAuthentication
  • OverrideAuthorization
  • OverrideExceptionFilters
  • OverrideResultFilters

Ojo con el Bug!

Como dijimos antes, hay un bug con esta feature que está solucionado con la versión MVC 5.1 RC. Si ya tenemos nuestro proyecto MVC 5 en marcha, podemos aplicar la siguiente solución.

La cosa es simple, vamos a tener que crear un nuevo filtro de anulación – en este caso lo llamaremos OverrideAuthorizeAttribute – que herede del atributo que deseamos anular – en este caso AuthorizeAttribute – e implemente la interfaz IOverrideFilter. Por último debemos implementar la propiedad FiltersToOverride la cual determina los filtros a anular:

Creando nuestro propio filtro de anulación.

Creando nuestro propio filtro de anulación.

Hecho esto ya podemos aplicar el filtro de anulación en cuestión:

Aplicando el filtro de anulación OverrideAuthorize.

Aplicando el filtro de anulación OverrideAuthorize.

Como pueden ver esta característica es por demás interesante, así que a tenerla presente.

Más de info sobre el tema en este excelente post de Imran Baloch y este otro gran post de Hack The Web with .NET.