Добавить окно поиска на главную страницу

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

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

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

  • Мастер-код codebehind
  • Пользовательский элемент управления
  • Или создайте отдельный 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 никогда не вызывается и, как результат, ничего не происходит, когда я печатаю в окне поиска и нажимаю Search.

Ответ 1

Забудьте о кодах и пользовательских элементах управления, если вы собираетесь использовать 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/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

Подводя итог: Внедрите окно поиска на главной странице 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);
});