Base Controller y Base View

Escribir un controller base desde el cual heredan los controllers y una view base desde la cual heredan todas las views tiene muchos beneficios. Aquí presentamos algunos que se vuelven particularmente interesantes al momento de migrar de MVC v1 a v2.

Reescritura de HtmlHelper.ActionLink y UrlHelper.Action

Como vimos en el post anterior, el HtmlHelper.ActionLink y el UrlHelper.Action perdieron 2 firmas, lo que implicaría cambiar TODAS las llamadas a los métodos ActionLink y Action que usen esa firma en TODAS las views. Si existiera una view base de la cual hereden todas las views, una solución a este problema es sobreescribir las property Html y Url de la view Base con clases que hereden de HtmlHelper y UrlHelper y que implementen los métodos ActionLink y Action con los parámetros anteriores. No es una solución prolija, pero en caso de tener muchas views es mucho más rápida que cambiar todas las vistas. El código sería el siguiente:

Reemplazo de OnError por HandleUnknowAction

Antes

Después

Cambio de OnPreAction por OnActionExecuting

Antes

Después

Sobreescribir InvokeActionMethod

Leave a Reply