在MVC3应用程序中,我有以下视图:
@using (Html.BeginForm("Index", "Search", new {query = @Request.QueryString["query"]}, FormMethod.Post))
{
<input type="search" name="query" id="query" value="" />
}
当我输入网址“/ Search?query = test”时,我的Index操作中的Request.Querystring完全读出搜索值(我的路由设置为忽略url中的Action)。当我在seachbox中键入它时,它会触及正确的操作和控制器(因此路由看起来很好)但是查询字符串保持为空。我做错了什么?
答案 0 :(得分:4)
问题是你要查看Request.QueryString
集合。但您正在执行POST
,因此query
值位于Request.Form
集合中。但我认为你希望你的TextBox填充数据,所以可以像我的样本一样。
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<input type="search" name="query" id="query" value="@Request.Form["query"]" />
}
<强>模型强>
namespace MyNameSpace.Models
{
public class SearchViewModel
{
public string Query { get; set; }
}
}
查看强>
@model MyNameSpace.Models.SearchViewModel
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
@Html.TextBoxFor(x => x.Query)
<input type="submit" />
}
<强>控制器强>
public ActionResult Index()
{
return View(new SearchViewModel());
}
[HttpPost]
public ActionResult Index(SearchViewModel model)
{
// do your search
return View(model);
}