我正在尝试在asp.net MVC5中创建URL。我寻找的行为如下:
http://www.example.com/es/faqs ----> when language is Spanish
http://www.example.com/faqs ----> when language is english
此网址的路线:
routes.MapRoute(
name: "FAQs",
url: "{lang}/FAQs",
defaults: new { controller = "StaticPages", action = "FAQs", lang= UrlParameter.Optional }
);
此网址呈现西班牙语 - > http://www.example.com/es/faqs
但我的问题是这个网址无法正常运行 - > http://www.example.com/faqs
当我尝试访问此网址时,我收到了一个找不到网页的错误。
在我的路线中,我正在尝试使lang(语言代码)可选,为什么当URL中没有语言代码时,我的路由不起作用。
答案 0 :(得分:1)
可选参数被认为是路径模板中的最后一个参数。当可选参数后面有任何内容时,它不会工作。您必须创建两个模板以允许两种格式
routes.MapRoute(
name: "LocalizedFAQs",
url: "{lang}/FAQs",
defaults: new { controller = "StaticPages", action = "FAQs", lang = "en" }
);
routes.MapRoute(
name: "DefaultFAQs",
url: "FAQs",
defaults: new { controller = "StaticPages", action = "FAQs", lang = "en" }
);