0

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

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

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

这种方式存在吗?

4

2 回答 2

5

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

我还建议您阅读following blog postScott Hanselman 的文章,他介绍了如果您尝试在 url 的路径部分发送特殊字符,您可能会遇到 IIS 的各种场景。我在这里引用他的结论:

在为在请求路径中获得疯狂的东西所做的所有努力之后,值得一提的是,简单地将值保留为查询字符串的一部分(还记得本文开头的 WAY 吗?)更容易、更清洁、更灵活,而且更多安全的。

于 2013-03-11T06:50:23.103 回答
0

只需将“#”替换为“sharp”,将“:”替换为“-”,您不能只将这些特殊字符放在 url

于 2013-03-11T06:54:23.243 回答