Я недавно создал вопрос о том, как использовать знаки, такие каки +
, в URL-адресе, но это привело меня к другому вопросу, как мне заменить пробелы в моем URL-адресе и почему?URL-адрес заменяет пробелы + знаками
Если мой URL-адрес something.com/Find/this is my search
, почему это неправильно? почему мы должны изменить его на something.com/Find/this+is+my+search
Я искал и пробовал решения уже более 5 часов. Везде, где я смотрю, ответ тот же, используйте httputility.urlencode
или Uri.escapeDataString
. Но я попытался сделать это так:
string encode = Uri.EscapeDataString(TextBoxSearch.Text);
Response.Redirect("/Find/" + encode);
string encode = HttpUtility.UrlEncode(TextBoxSearch.Text);
Response.Redirect("/Find/" + encode);
string encode = encode.replace(" ", "+")
Response.Redirect("/Find/" + encode);
Ни одна из этих работ, они не заменяют пространство с чем-либо (string.replace делает, но это также вызывает строку для изменения, что означает, что не может найти значения в базе данных на следующей странице).
Если я кодирую весь URL-адрес, то все мои /
включаются в%, и это явно не то, что я хочу.
Что мне нужно
If I redirect like this Response.Redirect("/Find/" + search);.
And I make a search like this "Social media".
I then get the queryString on the next page and use it to load info from my database.
Now I want to display info about Social media from my database.
but at the same time I want the url to say Find/Social+media.
EDIT:
Что попробовать:
string encode = HttpUtility.UrlEncode(TextBoxSearch.Text);
Response.Redirect("/Find/" + encode);
Это дает мне «404,11 - Модуль фильтрации запросов настроен на отклонить запрос который содержит двойную escape-последовательность ». на запрашиваемом URL http://localhost:65273/Find/social+media
в моем Find.aspx OnLoad():
IList<string> segments = Request.GetFriendlyUrlSegments();
string val = "";
for (int i = 0; i < segments.Count; i++)
{
val = segments[i];
}
search = val;
Это не является допустимым URL, пробелы в адресах являются '% 20' – Sayse
Когда я бегу на локальный и сделать поиск с использованием пространства это работает отлично. даже без замены «+». Но после того, как я прочитал, я понимаю, что я не могу использовать пробелы в URL-адресе, так как я могу их заменить? – Rodal
Ваш браузер превратит их в '% 20', поэтому не стоит беспокоиться. –