2010-12-09 89 views
1

将这两条路线字符串({language}/item/{itemId}/proreviews和item/{itemId}/proreviews)组合到一条路线中有什么方法吗?ASP.NET MVC将两条路线合并为一条

UPD。 {language}是可选的

UPD2。工作流程如下:用户输入domain.com/item/1/proreviews,然后将其重定向到带有相应国家/地区代码的网址,例如domain.com/en/item/1/proreviews。现在我正在实现本地化,我真的不想复制我所有的currrent(countrycode-less)路由。

回答

0

为什么不只是将{language}作为最后一个参数,那么很容易让它成为可选项。

+2

链接应该看起来像http://domain.com/en/item/1/proreviews。 http://domain.com/item/1/proreviews/en链接 – SiberianGuy 2010-12-09 17:45:51

1

路由接受正则表达式。你可以想出一个正则表达式来匹配你所支持的文化。只需将该路线放置在默认路线上方,即可通过。

其他可能性包括将语言放在cookie中或作为子域(en.domain.com/item/1/proreviews)。

0

为什么不创建单个重写规则,以便任何不以国家/地区代码开头的URL都自动添加语言(大概是使用/ en/in代替)。

这样,您将只有一条路由,因为IIS会将请求传递给使用该语言的MVC,并且您的用户不会更聪明。

这也意味着语言将是可选的。

我应该指出,您应该重写这些重写,否则,由于在不同的网址上有重复的内容(/en/item/1234/proreviews将具有与/item/1234/proreviews相同的内容),您很可能会遭受SEO后果。