Добавить окно поиска на главную страницу
Я пытаюсь добавить окно поиска на главную страницу в веб-приложении 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);
});