Asp.Net Routing - 用生成的 URL 中的破折号替换空格 %20 [重复]

Posted

技术标签:

【中文标题】Asp.Net Routing - 用生成的 URL 中的破折号替换空格 %20 [重复]【英文标题】:Asp.Net Routing - Replace white spaces %20 with dashes from URLs generated [duplicate] 【发布时间】:2011-10-22 03:03:51 【问题描述】:

可能重复:How does *** generate its SEO-friendly URLs?

我使用 Asp.net 4 和路由

我使用此路由为我的网站创建 SEO 友好的 URL。 Title url 参数是一个字符串示例“这是一个标题”,结果我在浏览器中以这种格式/Content/This%20is%20a%20Title 获取 URL。

我宁愿用更易读的破折号替换空格 %20,例如:/Content/This-is-a-Title

知道怎么做吗?感谢您对此的帮助

        routes.MapPageRoute(
            "View Content",                     // Route name
            "Content/Title",                  // Route URL
            "~/Cms/FrontEndCms/Content.aspx"    // Web page to handle route
        );

【问题讨论】:

【参考方案1】:

当您重定向到此 URL 时,请使用以下内容:

Response.Redirect(Page.GetRouteUrl(
    "View Content", 
    new  Title=(yourtitlehere).ToString().Trim().Replace(" ","-") )
);

我添加了Trim()。如果标题以空格开头或结尾,服务器可能会认为它是不同的路径并返回404: Resource not found

【讨论】:

您好,感谢您的回答,但代码应该在本机路由上运行。 是的,当您重定向时,或者您可以使用该代码设置链接的网址 谢谢,现在我明白了。您的解决方案很快就会被采用,但我想可能会导致一些性能下降。最后我剥离了我的 url 并存储在数据库中,所以我使用路由来获取干净的 URL 或我的链接。无论如何,非常感谢:) 我遇到了同样的问题,来到了这个链接。我认为它很有用:deliveron.com/blog/post/…

以上是关于Asp.Net Routing - 用生成的 URL 中的破折号替换空格 %20 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC Route详解

asp.net Routing 用法

.NET/ASP.NET Routing路由(深入解析路由系统架构原理)

NET/ASP.NET Routing路由(深入解析路由系统架构原理)(转载)

.NET/ASP.NET Routing路由(深入解析路由系统架构原理)

Asp.Net Routing:如何忽略多个通配符路由?