我正在尝试将搜索框添加到 ASP.Net MVC Web 应用程序中的母版页。让我困惑的是如何在母版页中正确实现它。那么用户在这个搜索框中输入数据,从MVC的角度应该如何处理数据?我知道我可以使用他母版页的代码,但我不应该。我目前正在尝试为此使用用户控件,但我不确定如何正确实现它,并且在线资源似乎有限。创建一个 HTML 助手是最好的吗?
总结:在 MVC 母版页中实现一个搜索框,该搜索框定向到不同的网站并包含用户在搜索框中键入的查询。
使用更好吗:
- 母版页的代码隐藏
- 用户控件
- 或者创建一个单独的 HTML 帮助程序。
更新:
好的,根据 queen3 的建议,我实现了一个 SearchController 并使用 HTML Helper BeginForm 生成一个搜索框。
Controller 操作:
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 函数永远不会被调用,因此,当我在搜索框中键入内容并点击“搜索”时,什么也没有发生。
最佳答案
如果您要使用 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。
Controller 非常简单:
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
}
}
关于asp.net-mvc - 将搜索框添加到母版页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3711576/