0

我需要一些帮助来实现我想要实现的目标。我正在做一个 ASP MVC 应用程序,但我无法正确制作路线。

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

首先,我在正确匹配正确事物的所有路线上使用它没有任何问题,但后来我开始致力于国际化,一切都搞砸了!

所以这里的问题是:

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

我试过了

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

但它没有告诉我路线不存在,这是不可能的,因为在我的路由资源管理器中,我清楚地看到了路线 /{culture}/{id}/ProductName

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

4

1 回答 1

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 时需要指定每个标记的地方。由于您在此控制器中只有一个操作,因此您无需指定它。它在您的路线中定义。

于 2013-11-13T09:59:17.220 回答