用其符号替换URL编码数据

ale*_*dru 0 c# asp.net-mvc

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

http://localhost:51208/Home/Details/C%23-in-Depth%2c-Second-Edition/BookId-3
Run Code Online (Sandbox Code Playgroud)

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

这样的方式存在吗?

Dar*_*rov 5

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

我也建议你阅读following blog post斯科特Hanselman的,在那里他介绍,如果你试图在你的URL的路径部分发送特殊字符,你可以用IIS遇到的各种情况.我在这里引用他的结论:

在完成所有这些努力以在请求路径中获取疯狂的东西后,值得一提的是,只需将值保留为查询字符串的一部分(还记得在本文开头的回复吗?)更简单,更清晰,更灵活,更多安全.