您好我正在尝试格式化我的Url,以使其看起来更加用户友好。到目前为止,我设法用“ - ”替换空格,但似乎有特殊字符,如#和:显示为编码数据。这就是我的意思:
http://localhost:51208/Home/Details/C%23-in-Depth%2c-Second-Edition/BookId-3
“#”符号显示为%23,“,”显示为%2c。我希望能够用原始符号替换此编码。
这种方式存在吗?
答案 0 :(得分:5)
哦不,你完全不想用#
替换它。此符号在网址中具有特殊含义。它代表fragment identifier
,其值永远不会发送到服务器。这基本上意味着如果您的网址中存在#
符号,则其后面的所有内容都会被截断,并且永远不会发送到服务器。您可以查看following post
以查看StackOverflow用于格式化问题标题中的slug的内容。您可以通过此替换函数运行您的字符串,以确保不会留下危险字符。
如果您尝试在网址的路径部分发送特殊字符,我还建议您阅读Scott Hanselman撰写的following blog post
,其中介绍了IIS可能遇到的各种情况。我在这里引用他的结论:
在完成所有这些努力以获得请求路径中的疯狂内容之后,就是这样 值得一提的是,只需将值保留为Query的一部分 字符串(记得在这篇文章的开头回答?)更容易, 更清洁,更灵活,更安全。
答案 1 :(得分:0)
只需将“#”替换为“sharp”,将“:”替换为“ - ”,就不能将这些特殊字符放在网址中