C# 对数据库中的URL查询字符串进行编码

C# 对数据库中的URL查询字符串进行编码,c#,asp.net,url,C#,Asp.net,Url,我试图对作为querystring发送的搜索进行编码(Response.Redirect(“/Find/”+TextBoxSearch.Text);)。数据库中有一行的名称包括/和+,当它进入URL时,事情就停止正常工作。我尝试过这样的编码: String encode = HttpUtility.UrlEncode(TextBoxSearch.Text); Response.Redirect("/Find/" + encode); 但是如果我不能让它工作,我还缺什么?假设搜索值为ex/ex1

我试图对作为querystring发送的搜索进行编码(
Response.Redirect(“/Find/”+TextBoxSearch.Text);
)。数据库中有一行的名称包括
/
+
,当它进入URL时,事情就停止正常工作。我尝试过这样的编码:

String encode = HttpUtility.UrlEncode(TextBoxSearch.Text);
Response.Redirect("/Find/" + encode);
但是如果我不能让它工作,我还缺什么?假设搜索值为
ex/ex18+
。我怎样才能让它成为一个查询字符串呢

不知道这是否重要,但以下是我在查找页面中获取查询的方式:

IList<string> segments = Request.GetFriendlyUrlSegments();
string val = "";
for (int i = 0; i < segments.Count; i++)
  {
     val = segments[i];
  }

search = val;
但这不会将查询字符串中的空格转换为%20。但它确实改变了“/”

编辑:现在我很乐意将这个url
localhost/Find/herearespaces
转到
localhost/Find/here+are+spaces

编辑:我已经搜索和尝试解决方案超过5个小时了。 有谁能告诉我:

  • 如果我像这样重定向
    Response.redirect(“/Find/”+search)
  • 我会像这样搜索社交媒体
  • 然后,我使用段获取查询字符串,如上面的代码所示
  • 现在我想从我的数据库中显示有关社交媒体的信息
  • 但同时我希望url上写着
    Find/Social+media
PS:我需要对每个url字符串进行编码吗?或者只是在我使用标志和空间的地方

而不是使用。从UrlEncode的文档中:

您可以使用UrlEncode方法或 UrlPathEncode方法。但是,这些方法返回不同的结果。 UrlEncode方法将每个空格字符转换为加号字符 (+)。UrlPathEncode方法将每个空格字符转换为 字符串“%20”,表示十六进制表示法中的空格。使用 在中对URL的路径部分进行编码时使用UrlPathEncode方法 为了保证一致的解码URL,无论哪种 平台或浏览器执行解码


+
字符表示查询字符串中的空格,但不表示地址部分中的空格

使用此选项时,斜杠是url的专用工具,因此您可以使用与斜杠实体等效的
.和+实体等价物
和#43。您的Url将如下所示:
http://www.mywebsite.com/Find/ex.ex 18+
。但如何在代码中设置这一点?我的应用程序如何知道将这些值转换为实体?我有一些地方可以让你按数据库中的值,而不是搜索它等。然后,当你想要返回url,要知道如何将它们转换为“普通”字符,请使用
HttpUtility.HtmlDecode(my_url_string)
(请参阅中的详细信息)。这些都不是必需的,事实上,将url视为HTML是一个坏主意
UrlEncode
没有中断,它将空格转换为在查询字符串中有效的
+
。如果地址中需要空格,请使用UrlPathEncode
String encoded = Uri.EscapeDataString(TextBoxSearch.Text);
Response.Redirect("/Find/" + encoded);