【问题标题】:Add a search box to a master page向母版页添加搜索框
【发布时间】:2010-09-14 17:59:14
【问题描述】:

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

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

是不是更好用:

  • 母版页的代码隐藏
  • 用户控件
  • 或者创建一个单独的 HTML Helper。

更新:

好的,按照 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 函数永远不会被调用,因此,当我在搜索框中输入内容并点击搜索时,什么也没有发生。

【问题讨论】:

  • 当你说“当我在搜索框中输入并点击搜索时什么都没有发生”,你确定它真的什么都没有吗?没有发出 HTTP 请求?
  • 安装 FireBug - 这将是你真正的 IDE,而不是 VS ;-) 或者你可以使用 Fiddler2。然后您将能够检查是否发出请求、发送到什么 URL、检查参数等。

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


【解决方案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() 和搜索结果。如果您接受类似 google 的搜索请求 /Search?q=text,则可以让表单使用 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
  }
}

【讨论】:

    【解决方案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);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多