Asp.net MVC5路由参数问题

时间:2016-06-09 10:32:33

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

我正在尝试在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中没有语言代码时,我的路由不起作用。

1 个答案:

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