У меня есть поисковый тип ввода в моей форме.Когда форма отправлена, страница перезагружается с параметрами запроса с +
Так что, если я ищу abc def
, параметр запроса становится ?q=abc+def
, URL становится https://localhost:44300/Search?q=abc+def
Теперь этоотправлено в webapi как вызов API.поэтому на стороне сервера я заменяю +
пробелом, а затем выполняю поиск на контроллере.Теперь, когда я ищу abc def+efg
, он становится abc+def%2Bdef
request.Query = request.Query.Replace('+', ' ');
request.Query = HttpUtility.UrlDecode(request.Query);
Так что на стороне сервера я сначала заменяю параметр +
s пробелом, затем декодирую его и, наконец, получаю abc def+efg
на контроллере, который я искал.
Всего этого можно было бы избежать, если бы при отправке формы был закодирован URL-адрес.так что если с самого начала параметром запроса было ?q=abc%20def%2Befg
, мне просто нужно было бы его декодировать.
Как это сделать?
Редактировать
Сначала выполняется рендеринг страницы, затем компонент vue получает параметр запроса и выполняет вызов контроллера api с помощью axios./api/search
const searchQuery = this.$router.getQueryParam('q');
this.queryParams.query = searchQuery ? searchQuery : null;
return axios.get(`/api/search`, {
params: queryParams,
});