C# 有一种方法可以在执行ASP MVC 4的OnAction上重命名控制器?

C# 有一种方法可以在执行ASP MVC 4的OnAction上重命名控制器?,c#,asp.net,asp.net-mvc,url-rewriting,C#,Asp.net,Asp.net Mvc,Url Rewriting,我已经尝试创建一个url重写器根据当前的语言。例如,如果我有控制器文章,对于每种语言,我都有如下记录: public class ControllerRewriter { public LanguageName { get; set; } public NiceName { get; set; } public Controller { get; set; } } 还有我搜索的ControllerWriter列表 public class ControllerRewri

我已经尝试创建一个url重写器根据当前的语言。例如,如果我有控制器文章,对于每种语言,我都有如下记录:

public class ControllerRewriter
{
    public LanguageName { get; set; }
    public NiceName { get; set; }
    public Controller { get; set; }
}
还有我搜索的ControllerWriter列表

public class ControllerRewriterList: List<ControllerRewriter>
{
    public string GetController(string niceName)
    {
        var cr = this.FirstOrDefault( c => c.NiceName == niceName);
        if( cr == null )
            return niceName;
        else
            return cr.Controller; 
    }
}
关于如何在OnActionExecuting或其他方法中重写控制器名称,您有什么想法/建议吗

更新:RedirectToRouteResult不是选项,因为它将更改当前url:-

谢谢,
Ovidiu

你可以做如下事情

filterContext.Result = new RedirectToRouteResult(routeName, routeValues);

我认为你的计划是正确的。我记得很久以前,我用那个方法做了一个动作和控制器的切换。我会看看我是否能找到代码。是的,我知道那个解决方案,但那会重定向我。。。它会用丑陋的url更改当前的漂亮url,我不想要这个。
filterContext.Result = new RedirectToRouteResult(routeName, routeValues);