【问题标题】:Lowercase URLs without affecting parameters不影响参数的小写 URL
【发布时间】:2013-06-21 20:30:29
【问题描述】:

我目前正在使用 ASP.NET MVC 4 路由,并将 LowercaseUrls 选项设置为 true,它运行良好。我正在使用这个配置:

        routes.LowercaseUrls = true;

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new {
                controller = "Inicio",
                action = "Index",
                id = UrlParameter.Optional
            });

但在一组特定的操作中,我有一个字符串id 参数,该参数已加密且区分大小写。

然后,当我尝试生成这样的操作链接时:

@Html.ActionLink("My Text", "Action", "Controller", new { id = encryptedString })

URL 中的id 参数被转换为小写字母,导致尝试解密字符串时出错。

是否可以配置路由到忽略 URL 参数的小写 URL?

【问题讨论】:

  • 我不确定,但如果你使用查询字符串而不是路由参数,它应该不管它吗?
  • 确实如此,但我更希望它不是查询字符串值。
  • 您可以使用 IgnoreRoute 免责声明构建自己的路线我不知道这是否可行只是一个想法

标签: asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing


【解决方案1】:

我以前遇到过这种情况。我最终做的是得到AttributeRouting

它们对 PreserveCaseForUrlParameters 有一个很好的功能(上面链接)。

另一个选项是使用LowercaseRoutesMVC。在这种情况下,您可以将某些路线设为小写,而您想要单独留下的路线您可以事先使用routes.MapRoute。但是,这可能会变得混乱,因为特殊配置的将是小写的,而默认配置的整个路由不会是小写。

希望这会有所帮助!

【讨论】:

猜你喜欢
  • 2011-04-16
  • 2019-09-06
  • 1970-01-01
  • 2017-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-03
  • 1970-01-01
相关资源
最近更新 更多