C# 对数据库中的URL查询字符串进行编码
我试图对作为querystring发送的搜索进行编码(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
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。但它确实改变了“/”
编辑:现在我很乐意将这个urllocalhost/Find/herearespaces
转到localhost/Find/here+are+spaces
编辑:我已经搜索和尝试解决方案超过5个小时了。
有谁能告诉我:
- 如果我像这样重定向
Response.redirect(“/Find/”+search)代码>
- 我会像这样搜索社交媒体
- 然后,我使用段获取查询字符串,如上面的代码所示
- 现在我想从我的数据库中显示有关社交媒体的信息
- 但同时我希望url上写着
Find/Social+media
+
字符表示查询字符串中的空格,但不表示地址部分中的空格 使用此选项时,斜杠是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);