ASP.NET MVC将两个路由合并为一个

时间:2010-12-09 17:26:07

标签: c# .net asp.net-mvc

有没有办法将这两个路线字符串:{language} / item / {itemId} / proreviews和item / {itemId} / proreviews组合成一个路线?

UPD。 {语言}是可选的

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

3 个答案:

答案 0 :(得分:1)

路由接受正则表达式。您可以提出与您支持的文化相匹配的正则表达式。只需将该路线置于默认路线之上即可。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

为什么不创建一个重写规则,以便任何不以国家/地区代码开头的网址都会自动添加语言(可能是/ en / in)。

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

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

我应该指出,虽然你应该重写这些重写,否则,你很可能会因为在不同网址上有重复内容而导致搜索引擎优化后果(/en/item/1234/proreviews将会有相同的内容/item/1234/proreviews)。