我正在尝试将搜索框添加到ASP.Net MVC Web应用程序中的母版页。令我困惑的是如何在母版页中正确实现它。所以用户在这个搜索框中输入数据,应该如何从MVC角度处理数据?我知道我可以使用他母版页的代码,但我不应该。我目前正在尝试使用用户控件,但我不确定如何正确实现它,并且在线资源似乎有限。是否最好创建一个HTML帮助器?
总结:在MVC母版页中实现一个搜索框,该搜索框指向不同的网站,并包含他们在搜索框中输入的用户查询。
使用是否更好:
更新:
好的,根据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函数永远不会被调用,因此,当我在搜索框中输入并点击搜索时,没有任何反应。
答案 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);
});