Добавить окно поиска на главную страницу - PullRequest
2 голосов
/ 14 сентября 2010

Я пытаюсь добавить окно поиска на главную страницу в веб-приложении ASP.Net MVC. Что меня смущает, так это то, как правильно реализовать это на главной странице. Таким образом, пользователь вводит данные в это поле поиска, как эти данные должны обрабатываться с точки зрения MVC? Я знаю, что могу использовать код главной страницы, но не должен. В настоящее время я пытаюсь использовать пользовательский элемент управления для этого, но я не уверен, как правильно его реализовать, и он-лайн ресурсы кажутся ограниченными. Будет ли лучше создать помощника HTML ??

Подводя итог: Реализуйте окно поиска на главной странице MVC, которое направляет на другой веб-сайт и включает запрос пользователя, который он ввел в поле поиска.

Лучше ли использовать:

  • Код главной страницы
  • Пользовательский элемент управления
  • Или создайте отдельный помощник HTML.

UPDATE:

Хорошо, по совету queen3, я реализовал SearchController и использовал HTML Helper BeginForm для генерации окна поиска.

Действие контроллера:

        Function SearchWiki(ByVal q As String) As ActionResult
            Return Redirect("http://home/search/Results.aspx?k=" & q & "&s=IT%20FAQ")
        End Function

А на главной странице:

<% Using Html.BeginForm("SearchWiki", "Search", FormMethod.Post)%>
                                <input type="text" name="q" />
                                <input type="submit" value="Search" />
                            <% End Using%>

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

Ответы [ 2 ]

4 голосов
/ 14 сентября 2010

Забудьте о codebehind и пользовательских элементах управления, если вы собираетесь использовать ASP.NET MVC. Вам нужны HTML, CSS и JavaScript.

Полагаю, вы хотите что-то вроде

<form action="<%= Url.Action("Index", "Search") %>" method="post">
   <input type="text" name="q" />
</form>

С помощниками это будет что-то вроде

<% Html.BeginForm("Index", "Search") %>
   <input type="text" name="q" />
<% Html.EndForm() %>

Просто поместите это на главную страницу, где это уместно в вашем дизайне сайта. Затем создайте SearchController для обработки запроса и верните View () с результатами поиска. Вы можете заставить форму использовать GET вместо POST, если вы принимаете поисковые запросы, похожие на Google /Search?q=text.

Контроллер очень прост:

public class SearchController: Controller
{
  public ActionResult Index(string q)
  {
    return View(SearchHelper.DoSearch(q));
    // or return Redirect("http://site?q=" + q) if you want redirect
  }
}
2 голосов
/ 14 сентября 2010

Подведем итог: реализовать окно поиска на главной странице MVC, которая направляет другой сайт и включает в себя пользовательский запрос, который они набрали в окно поиска.

Похоже, вы хотите использовать другой поставщик поиска. В этом случае вам вообще не нужен серверный код ... только чистый HTML. Я приведу пример с Google:

<form id="search" action="http://www.google.com.br/search" method="GET">
    <input type="text" name="q" />
    <input type="submit" value="Submit" />
</form>

Просто добавьте этот код на MasterPage и все готово.

Вы также можете добавить JQuery для добавления строки "site:www.yoursite.com" к поисковому запросу. При этом вы можете попросить Google выполнить поиск по ключевым словам на вашем сайте. Код JavaScript должен быть:

$("#search").submit(function(){
    var input = $(this).find('input[name=q]');
    var query = input.val() + ' site:www.yoursite.com';
    input.val(query);
});
...