根据所选语言更改Controller和Action名称

Rah*_*odi 4 c# model-view-controller asp.net-mvc asp.net-routing razor

我有一个名为"Hem"的控制器,Action名称为"Om".我设置瑞典语的默认语言.所以路线将在瑞典网站上,就是这样

/sv/Hem/Om
Run Code Online (Sandbox Code Playgroud)

现在,我想通过单击语言部分中的英语将语言更改为"en".所以路线会像这样自动设定:

/en/Home/About
Run Code Online (Sandbox Code Playgroud)

但功能应该是工作/sv/Hem/Om和在地址栏应显示为/en/Home/About

专家可以帮助我.

Ani*_*aha 8

你可以这样做.

routes.MapRoute(
    "English route",
    "en/{controller}/{action}/{id}"
    new { controller = "Home", action = "Index", language = "en" },
);

routes.MapRoute(
    "FrenchHome",
    "/sv/Hem/Om",
    new { controller = "Home", action = "Index", language = "fr" }
);
Run Code Online (Sandbox Code Playgroud)

或者你可以这样做:

public class GenericRoutes
{
    public string Controller {get;set;}
    public string Action {get;set;}
    public string Url{get;set;}
    public string RouteName{get;set;}
}

public List<GenericRoutes> Routes = new List<GenericRoutes>();

Routes.Add(new GenericRoutes{Cotroller="bl",Action="cl",Url="bl/cl"})

for(int i=0;i<Routes.count();i++) 
{
    routes.MapRoute(
        Routes[i].RouteName,
        Routes[i].Url,
        new { controller = Routes[i].Controller, action = Routes[i].Action },
    );
}
Run Code Online (Sandbox Code Playgroud)