(ASP MVC4)属性路由/ RedirectToRoute

时间:2013-11-13 09:55:37

标签: c# asp.net-mvc-4 asp.net-mvc-routing attributerouting

我需要一点帮助才能实现目标。 我正在做一个ASP MVC应用程序,我无法正确制作路线。

我正在使用nuget包属性路由(现在默认情况下在MVC5中)。

首先,我没有任何问题使用它所有匹配正确的东西的路线,但后来我开始致力于国际化,一切都爆炸了!

所以这就是问题所在:

我需要获取这些网址:domain / culture / id / product / action 但我的产品只有一个动作。因此,当用户访问我的网站时,它会设置语言,然后将其重定向到他询问的产品(如果没有要求,则为默认产品)

我试过

return RedirectToRoute("/" + cultureName + "/" + id + "/" + productName + "/");

但它无法告诉我路线不存在是不可能的,因为在我的路由浏览器中我清楚地看到路线/ {culture} / {id} / ProductName

是否可以这样做,或者我是否需要改变我对路由的思考方式?

1 个答案:

答案 0 :(得分:1)

return RedirectToRoute("SomeRouteName", new { 
    culture = cultureName,
    id = id, 
    productName = productName 
});

和您的路线定义:

routes.MapRoute(
    "SomeRouteName",
    "{culture}/{id}/{productName}",
    new { controller = "Home", action = "Index" }
);

请注意,路由模式为{culture}/{id}/{productName},您需要在调用RedirectToAction时指定每个标记。由于此控制器中只有一个操作,因此无需指定它。它在您的路线中定义。