用其符号替换URL编码数据

时间:2013-03-11 06:48:57

标签: c# asp.net-mvc

您好我正在尝试格式化我的Url,以使其看起来更加用户友好。到目前为止,我设法用“ - ”替换空格,但似乎有特殊字符,如#和:显示为编码数据。这就是我的意思:

http://localhost:51208/Home/Details/C%23-in-Depth%2c-Second-Edition/BookId-3

“#”符号显示为%23,“,”显示为%2c。我希望能够用原始符号替换此编码。

这种方式存在吗?

2 个答案:

答案 0 :(得分:5)

哦不,你完全不想用#替换它。此符号在网址中具有特殊含义。它代表fragment identifier,其值永远不会发送到服务器。这基本上意味着如果您的网址中存在#符号,则其后面的所有内容都会被截断,并且永远不会发送到服务器。您可以查看following post以查看StackOverflow用于格式化问题标题中的slug的内容。您可以通过此替换函数运行您的字符串,以确保不会留下危险字符。

如果您尝试在网址的路径部分发送特殊字符,我还建议您阅读Scott Hanselman撰写的following blog post,其中介绍了IIS可能遇到的各种情况。我在这里引用他的结论:

  

在完成所有这些努力以获得请求路径中的疯狂内容之后,就是这样   值得一提的是,只需将值保留为Query的一部分   字符串(记得在这篇文章的开头回答?)更容易,   更清洁,更灵活,更安全。

答案 1 :(得分:0)

只需将“#”替换为“sharp”,将“:”替换为“ - ”,就不能将这些特殊字符放在网址中