【发布时间】:2014-12-07 08:42:37
【问题描述】:
我正在尝试获取如下路线:
{lang:optional}/{controller}/{action}/{id:optional}
使用本文中的“控制器约束”思想:(MVC Routing Constraint on Controller Names),无论是否提供 {lang} 值,上述路由都非常有效。
但是我有一个问题来匹配这条路线:
routeName: testRoute
url: {lang:optional}/list/{something:optional}
{controller = "product", action = "index"}
对于上述路由,必须提供{lang}值,否则不起作用。
我有两个解决方法。
第一种方式是为上面设置两条路由:
非常标准的:
routeName: testRoute
url: /list/{something}
{controller = "product", action = "index"}
还有一个非常标准的:
routeName: testRouteLang
url: {lang:not_optional}/list/{something:optional}
{controller = "product", action = "index", lang="de"}
我想知道是否有办法将两条标准路线组合成一条路线。
第二种解决方法是使用子域名,例如
http://example.com/list (default to English)
http://de.example.com/list (de)
但出于 SEO 的原因,我真的不喜欢子域的想法(也许我在这一点上错了)。
我的目标是删除 URL 中的默认“en-us”。我喜欢这个
http://www.example.com/list/something (default as English)
我不想在 url 中强制使用“en-us”
http://www.example.com/en-us/list/something
只有在当前文化不是英语的情况下,“lang”才应该出现在 URL 中:
http://www.example.com/de
http://www.example.com/fr/list/something
谢谢。
【问题讨论】:
标签: asp.net-mvc asp.net-mvc-routing