0

我有一个请求,它有一条路线,但是在 global.asax 中设置了很多它们......一个典型的路线是......

routes.MapRoute(
                "NewStore",
                "{culture}/{client}/{brand}/NewStore/{action}",
                new
                {
                    culture = UrlParameter.Optional,
                    client = UrlParameter.Optional,
                    brand = UrlParameter.Optional,
                    controller = "NewStore",
                    action = "Index"
                }
                );

我需要创建一个 ddl 来切换页面上的文化。所以实际上我想要做的就是重新创建路由 url 但更改一个参数。所以我想做点什么...

    Route currentRoute = httpContext.GetCurrentRoute();
    Route englishCultureRoute = currentRoute;
    Route spanishRoute = currentRoute;
    englishCultureRoute.RouteData.Values["culture"] = "en-en"
    spanishRoute RouteData.Values["culture"] = "es-es"

@Html.SelectListForRoutes(englishCultureRoute,spanishRoute);

所以上面是伪代码,我想在控制器中做第一个位,但我如何在 c# 中做到这一点?

4

1 回答 1

0

您可以从控制器访问路由数据

RouteData

如果你想分配新的值,你可以做这样的事情

public ActionResult Index(int id)
{
    RouteData.Values["id"] = 555;
    return View();
}

在视图中,您可以从

@ViewContext.RouteData.Values["Id"]

但是如果您对应用程序的全球化有更好的解决方案,您可以检查一下

于 2012-04-19T11:51:32.467 回答