【问题标题】:'/' character in routing parameter路由参数中的“/”字符
【发布时间】:2014-01-30 12:01:48
【问题描述】:

我使用的是路由模式。最近,我改变了模式。现在,我正在努力解决一个让我烦恼的问题。

我想获取以下网址:

http://www.mysite.com/news_title/-1322.html

路由模式:

    routes.MapRoute(
                    name: "haber2",
                    url: "{noFollow}-{id}.html",
                    defaults: new { controller = "Anasayfa", action = "HaberID" },
                    constraints: new {id = "\\d+"}
                );

点击下面的链接时,我面临着找不到。如何克服这个问题?

非常感谢任何帮助和技巧。

【问题讨论】:

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


【解决方案1】:

没有。不可能。

路线中的斜线肯定会产生这个问题。 默认路由引擎总是根据 no 搜索路由模式。 URL 中的斜线。

我尝试使用通配符“*”来捕获所有路线。

类似下面的东西。

 routes.MapRoute(
                    name: "haber2",
                    url: "{noFollow*}-{id}.html",
                    defaults: new { controller = "Anasayfa", action = "HaberID" },
                    constraints: new {id = "\\d+"}
                );

但没有运气..

希望有所帮助。

【讨论】:

    【解决方案2】:

    您的网址中缺少斜杠:

     routes.MapRoute(name: "haber2",
                    url: "{noFollow}/-{id}.html",
                    defaults: new { controller = "Anasayfa", action = "HaberID" },
                    constraints: new {id = "\\d+"}
                );
    

    【讨论】:

    • 请注意 'news_title/' 来自数据库。 'news_title' 也可能来自数据库。所以路由模式不能改变。
    • 好的,那你为什么不简单地映射另一条路线来满足另一种情况呢?
    • 是的,这是一个解决方案,我通过重写引擎做到了。但这不是我问题的正确答案,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 2014-09-22
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 2017-11-03
    • 2016-10-23
    相关资源
    最近更新 更多