Реализация страницы поиска с использованием параметров URL в ASP.NET и ASP.NET MVC - PullRequest
5 голосов
/ 02 декабря 2008

Допустим, у меня есть поисковая страница с именем Search.aspx, которая принимает строку поиска в качестве параметра URL-аля Google (например, Search.aspx? Q = Это + is + my + search + string).

В настоящее время у меня есть asp: TextBox и asp: Button на моей странице. Я обрабатываю событие OnClick кнопки и перенаправляю в файле codebehind на Search.aspx? Q =

Как насчет ASP.NET MVC, когда у вас нет кода для перенаправления? Вы бы вместо этого создали элемент формы GET, который бы публиковал в Search.aspx? Или вы бы обработали перенаправление каким-либо другим способом (например, событие jQuery, прикрепленное к кнопке)?

Ответы [ 3 ]

4 голосов
/ 02 декабря 2008

Вы должны понимать, что MVC не ссылается непосредственно на страницы .aspx, такие как WebForms, в своих URL. Его основное назначение - разделить задачи, а именно модель (данные), контроллер (логика) и представление (представление).

Во-первых, вам нужно создать маршрут, соответствующий вашим URL-адресам, который теперь будет выглядеть следующим образом, например: / home / search / Это + is + my + search + string

Это вызовет метод действия поиска контроллера Home, который получит «Это моя строка поиска» в качестве входного параметра. Это действие отвечает за доступ к модели и получение результатов, вероятно, из базы данных.

Как правило, ваше действие поиска будет возвращать ViewResult, содержащий представление, помещенное в папку /Views/Home/Search.aspx. Здесь вы не можете использовать ни функцию обратной передачи, ни события ваших веб-элементов управления, как в WebForms, поскольку приложения MVC не имеют состояния и не управляются событиями. Это больше похоже на способ запроса / отправки.

Подробнее о MVC читайте здесь .

2 голосов
/ 02 декабря 2008

Создайте пользовательский элемент управления с именем Search.ascx с формой:

<% using (Html.BeginForm ("Search", "Home")) { %>
    <input name="search" type="text" size="16" id="search" />
    <input type="image" name="search-image" id="search-image" src="search.gif" />
<% } %>

И в вашем поисковом действии все, что вам нужно, это следующее:

public class HomeController : Controller
{
    public ActionResult Search (string search)
    {
        throw new Exception (string.Format ("Search: {0}", search));
    }
}

На вашей главной странице или где угодно вы можете добавить

<% Html.RenderPartial ("Search"); %>
0 голосов
/ 02 декабря 2008

Вы можете использовать простой javascript в нажатии кнопки для перенаправления на страницу поиска:

Search <input type="text" id="go" size="4" /><input type="button" value="<%=Html.Encode(">>") %>" onclick="javascript:window.location='<%=Url.Action("Search", "Home") %>/' + document.getElementById('go').getAttribute('value')" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...