Me parece que desea utilizar redirecciones fuertemente tipadas. Hice una llamada RedirectionHelper clase auxiliar estática que tiene el siguiente método:
public static string GetUrl<T>(Expression<Action<T>> action, RequestContext requestContext, RouteValueDictionary values = null) where T : Controller
{
UrlHelper urlHelper = new UrlHelper(requestContext);
RouteValueDictionary routeValues = ExpressionHelper.GetRouteValuesFromExpression(action);
if (values != null)
foreach (var value in values)
routeValues.Add(value.Key, value.Value);
return urlHelper.RouteUrl(routeValues);
}
La única advertencia es que usted tendrá que utilizar la biblioteca de futuros Microsoft.Web.Mvc disponibles sobre Nuget.
Ahora, para su controlador, crear un controlador de base de que todos los controladores heredan de que tiene este método:
protected RedirectResult RedirectToAction<T>(Expression<Action<T>> action, RouteValueDictionary values = null) where T : Controller
{
return new RedirectResult(RedirectionHelper.GetUrl(action, Request.RequestContext, values));
}
Ahora, en su acción, todo lo que tiene que hacer es decir:
return RedirectToAction<Controller>(x => x.Index());
Del mismo modo, puede escribir un método de extensión html que tome los mismos parámetros y construya su etiqueta de anclaje.
Como dijo anteriormente que quería, cuando cambia los nombres de Controlador o Acción, su proyecto se interrumpirá en tiempo de compilación y le mostrará dónde ocurren las interrupciones. Sin embargo, esto solo ocurrirá en los controladores, ya que las vistas no se compilan.
Espero que esto ayude!
No hay ningún problema con este mi humilde opinión. En algún momento, debe indicarle al código que apunte a una clase o función específica. – Timbo
@Badger el problema es qué pasa si cambia el nombre de sus acciones/controladores. Luego tiene que encontrar de alguna manera todas las cadenas codificadas para actualizarlas y no puede confiar en que el compilador le diga que se ha perdido algo. – Dolbz
ReSharper puede hacer que este no problema – driushkin