将搜索框添加到母版页

时间:2010-09-14 17:59:14

标签: asp.net-mvc vb.net asp.net-mvc-2 web-applications

我正在尝试将搜索框添加到ASP.Net MVC Web应用程序中的母版页。令我困惑的是如何在母版页中正确实现它。所以用户在这个搜索框中输入数据,应该如何从MVC角度处理数据?我知道我可以使用他母版页的代码,但我不应该。我目前正在尝试使用用户控件,但我不确定如何正确实现它,并且在线资源似乎有限。是否最好创建一个HTML帮助器?

总结:在MVC母版页中实现一个搜索框,该搜索框指向不同的网站,并包含他们在搜索框中输入的用户查询。

使用是否更好:

  • 母版页的代码隐藏
  • 用户控件
  • 或创建单独的HTML帮助程序。

更新:

好的,根据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 个答案:

答案 0 :(得分:4)

如果要使用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()。如果您接受类似谷歌的搜索请求/搜索?q =文本,您可以使表格使用GET而不是POST。

控制器非常简单:

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
  }
}

答案 1 :(得分:2)

  

总结:实施搜索框   在指向的MVC母版页中   不同的网站并包含   用户在其中输入的查询   搜索框。

好像您想要使用其他搜索提供商。在这种情况下,您根本不需要任何服务器端代码...只有纯HTML。我会给你一个谷歌的例子:

<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"附加到搜索查询中。这样做,您可以要求谷歌搜索您网站上的关键字。 javascript代码应为:

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