0

Я использую ASP.NET MVC, у меня есть форма поиска для ввода пользователем. Когда форма отправляется, данные из формы передаются моему действию индекса, чтобы вернуть представление, отображающее запрошенные данные.Получить запрос MVC querystring

В моем методе действия индекса Я использую введенные данные для обновления вида.

Пользователь не должен вводить все поля формы, чтобы данные, полученные моим действием, имели пустые ключи параметров. Но мне просто нужны ключи, которые имеют значения в URL-адресе.

Что я получаю, не желательно Пример:

http://www.domain.com/searchresults?name=&age=&id=98787879

Как вы можете видеть имя и возраст не имеют значения. Если я избавлюсь от адресов в адресной строке, правильные данные будут отображаться правильно, что ожидается.

URL, я хочу просто

http://www.domain.com/searchresults?id=98787879

Есть ли способ, прежде чем разобрать строку запроса, переходит в метод действия. Возможно, используя Ajax для усечения ненужных ключей? Но как я могу представить это и перейти на страницу?

+0

это queryString является обязательным для вашего использования ?? сообщение может быть другим вариантом навсегда. – FosterZ

+0

Да, строка запроса обязательна, поэтому поиск может быть отмечен книгой. – Rayshawn

ответ

1

в этом случае, вы можете сначала позвонить в яваскрипте функцию на вашу поисковую кнопку мыши, которые будут строить строку запроса и URL и огнь на указанном вами Action

+0

, так что сделайте функцию кнопки конструировать url так, как я хочу, и вести себя как ссылку в основном? – Rayshawn

+0

yep, point took – FosterZ

+0

Это был лучший подход для моих целей, отлично работает. – Rayshawn

1

Вы можете сделать это с помощью Javascript, но построения строки запроса (Я предполагаю, что тип формы - GET) - это работа браузера, и я бы не мешал ей или не попадал в задачу убедиться, что ваш javascript работает во всех браузерах.

Несмотря на то, что он менее эффективен, я бы просто использовал вызов this.RedirectToAction в вашем MVC-контроллере и перенаправил запрос на перегрузку метода, в котором параметры не определены (т. Е. Url имеет только параметры, имеющие значения) , Таким образом, браузер пользователя будет иметь дополнительную обратную связь, потому что он сначала получит ответ перенаправления от вашего контроллера, но вам не нужно будет обрабатывать javascript на стороне клиента.

+0

У вас есть пример redirectAction. Я не понимаю, что часть «параметры не определены», как передать новый запрос в действие перенаправления? redirectAction ('controller', 'Index', querystringdata '); ? – Rayshawn

+0

Я предполагаю, что у вас есть что-то вроде MyAction (string parameter1, string parameter2, string parameter3, ...) ', и когда параметр пуст, его значение равно либо null, либо string.Empty. Для вашего конкретного примера «имя» будет пустым или нулевым. Если вы получите доступ к свойству QueryString 'Request', он даст вам имя NameValueCollection. Проведите через это и постройте «RouteValueDictionary» только из тех параметров, у которых есть значение, а затем используйте перегрузку RedirectToAction, которая принимает RouteValueDictionary для перенаправления запроса. – Ameen

Смежные вопросы