我正在使用asp mvc 5.2的属性路由。
我希望用户能够使用“de”或“en”等语言标记来调用网址。
MYDOMAIN / EN /富
为此,我创建了一个routeattribute,其约束条件如此blog post
中所述当语言环境部分位于末尾时,这很有效:
[LocaleRoute("home/index/{locale}/","de)]
然后我可以拨打主页/索引或主页/索引/ de
但是当我把它移到开头时,我不能再省略语言环境了。
[LocaleRoute("{locale}/home/index","de)]
我只能调用 de / home / index ,但主页/索引会返回 404 Notfound。也没有调用约束。看起来路线不仅仅是找到了。
关于我做错了什么以及我该做什么的任何提示?
答案 0 :(得分:0)
您可能需要指定区域设置是可选参数:
[LocaleRoute("{locale?}/home/index","de")]
另一方面,您使用的是不同的控制器吗?恩?如果您使用单个控制器,则不需要LocaleRoute并且可以使用默认属性(http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx):
[RouteArea("{locale?}/home/")]
public class HomeController : Controller
{
...
[Route("index")]
public ActionResult Index (string culture)
{
...
}
}
修改强>
您还可以使用以下附加路线注册您的操作,只要您注意为文化提供默认值或处理null。
[Route("/home/index")]