我需要一点帮助来实现我想要实现的目标。我正在做一个ASP MVC应用程序,但我无法正确制作路线。
我正在使用 nuget 包属性路由(现在在 MVC5 中默认)。
首先,我在正确匹配正确事物的所有路线上使用它没有任何问题,但后来我开始致力于国际化,一切都爆炸了!
所以问题来了:
我需要获取这些网址:域/文化/ID/产品/操作但我的产品只有一个操作。因此,当用户访问我的网站时,它会设置语言,然后将他重定向到他要求的产品(如果没有人询问,则为默认产品)
我试过了
return RedirectToRoute("/" + cultureName + "/" + id + "/" + productName + "/");
但是告诉我路由不存在是不可能的,因为它不起作用,因为在我的路由资源管理器中,我清楚地看到路由/{culture}/{id}/ProductName
是否可以以这种方式执行此操作,或者我需要改变对路由的思考方式?
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 时需要指定每个令牌的位置。由于此控制器中只有一个操作,因此无需指定它。它是在您的路由中定义的。