Asp.net MVC5路由参数问题

Asp.net MVC5 route parameter issue

我正在尝试在 asp.net MVC5 中创建 URLs。我正在寻找的行为如下:

http://www.example.com/es/faqs ----> when language is Spanish
http://www.example.com/faqs    ----> when language is english

我的路线URL:

routes.MapRoute(
        name: "FAQs",
        url: "{lang}/FAQs",
        defaults: new { controller = "StaticPages", action = "FAQs", lang= UrlParameter.Optional }
    );

此 URL 以西班牙语呈现查找 --> http://www.example.com/es/faqs

但我的问题是 url 无法正常运行 --> http://www.example.com/faqs

当我尝试访问此 URL 时,出现找不到页面错误。

在我的路线中,我试图将 lang(语言代码)设置为可选,为什么我的路线在 URL 中没有语言代码时不起作用。

可选参数应该是路由模板中的最后一件事。当可选参数后面有任何内容时,它将不起作用。您将不得不创建两个模板以允许两种格式

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" }
);