Как реализовать страницу поиска, которая показывает результаты на той же странице? - PullRequest
0 голосов
/ 18 марта 2010

Я впервые использую ASP.NET MVC 2 в проекте на работе и чувствую себя немного нубом.

У меня есть страница с контролем поиска клиентов / частичным представлением. Элемент управления представляет собой текстовое поле и кнопку. Вы вводите идентификатор клиента в текстовое поле и нажимаете кнопку поиска. Затем страница «обновляется» и показывает данные клиента на той же странице . Другими словами, сведения о клиенте отображаются под элементом управления поиском клиентов.

Это так, что если клиент не тот, пользователь может искать снова, не возвращаясь в браузере. Или, возможно, они неправильно набрали идентификатор клиента и должны повторить попытку.

Я хочу, чтобы URL выглядел следующим образом:

/Customer/Search/1

Очевидно, что это соответствует маршруту по умолчанию в проекте.

Теперь, если я введу вышеуказанный URL-адрес прямо в браузер, он будет работать нормально. Однако когда я затем использую элемент управления поиском на этой странице для поиска, скажем, клиента 2, страница обновляется с правильными сведениями о клиенте, но URL-адрес не изменяется! Остается

/Customer/Search/1

Когда я хочу, чтобы это было

/Customer/Search/2

Как я могу изменить его на правильный URL?

Я использую только маршрут по умолчанию в Global.asax.

Мой метод поиска выглядит так:

<AcceptVerbs(HttpVerbs.Get)> _
Function Search(ByVal id As String) As ActionResult
    Dim customer As Customer = New CustomerRepository().GetById(id)

    Return View("SearchResult", customer)
End Function

Ответы [ 2 ]

1 голос
/ 18 марта 2010

использовать результат действия RedirectToRoute
ссылка

1 голос
/ 18 марта 2010

Хорошее место для начала может быть NerdDinner, если вы еще этого не сделали.

В то же время, хотя подход, который я бы использовал, должен иметь страницу с моим окном поиска.

Тогда у меня будет <div>, который я назову "SearchResults". Это в конечном итоге будет держать мои результаты в поиске.

Затем у меня есть PartialView, который берет модель, которая имеет все результаты поиска и отображает их.

Поэтому, когда я нажимаю кнопку, я вызываю действие jQuery, которое принимает параметр поиска, выполняет поиск и затем возвращает мой PartialView в виде отрендеренного HTML.

Вернувшись на сторону клиента, я беру этот визуализированный HTML и заменяю содержимое моего div на HTML.

Ключевые слова для Google или SO - RenderPartial. Это внутренний код для визуализации частичного представления и предоставления вам HTML.

Также jQuery выполняет постбэки, чтобы вы могли вызывать действия в вашем контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...