无法将routeValues传递给部分视图中的操作

时间:2011-11-22 23:00:58

标签: c# asp.net-mvc-3

我想在我的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" />
}

3 个答案:

答案 0 :(得分:2)

尝试

public ActionResult Search(SearchModel model)

答案 1 :(得分:0)

为什么将课程定义为Keyword然后查看SearchResult您将其作为keyword(小写首字母)传递?

1 UpdateModel

您可以使用SearchModel方法更新课程UpdateModel,以检查您是否可以进行正确的作业。

2 FormCollection

您可以尝试在方法Search表单数据(FormCollection)中作为参数接收,并检查您是否得到了所需的内容。

答案 2 :(得分:0)

最后,我解决了。问题是SearchModel参数名称是keyword,它应该是除keyword之外的任何内容,因为已经有一个使用此名称呈现的html控件。

要解决此问题,只能使用其他名称命名:

public ActionResult Search(SearchModel model)
{
     // model now has a value.
}