我想在我的MVC应用程序中添加搜索功能。此功能应适用于所有页面。所以,我将它添加到共享布局中。
我遇到的唯一问题是,尽管我在局部视图中创建了新的Search
,但我无法将routValues传递给Form
操作。
目标行动:(执行搜索)
[HttpPost]
public ActionResult Search(SearchModel keyword)
{
// keyword is always null
return RedirectToAction("SearchResult", keyword.keyword);
}
public class SearchModel { public string Keyword { get; set; } }
部分视图:
@model DocuLine.Models.SearchModel
@using (Html.BeginForm("Search", "Home", FormMethod.Post))
{
@Html.EditorFor(model => model.Keyword)
<input type="submit" value="Search" />
}
答案 0 :(得分:2)
尝试
public ActionResult Search(SearchModel model)
答案 1 :(得分:0)
为什么将课程定义为Keyword
然后查看SearchResult
您将其作为keyword
(小写首字母)传递?
您可以使用SearchModel
方法更新课程UpdateModel
,以检查您是否可以进行正确的作业。
2 FormCollection
您可以尝试在方法Search
表单数据(FormCollection
)中作为参数接收,并检查您是否得到了所需的内容。
答案 2 :(得分:0)
最后,我解决了。问题是SearchModel
参数名称是keyword
,它应该是除keyword
之外的任何内容,因为已经有一个使用此名称呈现的html控件。
要解决此问题,只能使用其他名称命名:
public ActionResult Search(SearchModel model)
{
// model now has a value.
}