Не удалось передать routeValues ​​для действия из частичного представления - PullRequest
1 голос
/ 23 ноября 2011

Я хочу добавить функцию поиска в мое приложение MVC.Эта функциональность должна быть доступна для всех страниц.Итак, я добавил его в общий макет.

Единственная проблема, с которой я столкнулся, заключается в том, что я не могу передать routValues ​​в действие Search, несмотря на то, что я создаю новый 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 ]

2 голосов
/ 23 ноября 2011

Попробуйте

public ActionResult Search(SearchModel model)
0 голосов
/ 23 ноября 2011

Наконец-то я это решаю.Проблема в том, что имя параметра SearchModel равно keyword, и оно должно быть чем угодно, кроме keyword, потому что уже есть элемент управления html с этим именем.

Чтобы решить его, его нужно только назватьс другим именем:

public ActionResult Search(SearchModel model)
{
     // model now has a value.
}
0 голосов
/ 23 ноября 2011

Почему класс определяется как Keyword, а затем при просмотре SearchResult вы передаете его как keyword (первая буква в нижнем регистре)?

1 UpdateModel

Вы можете обновить класс SearchModel с помощью метода UpdateModel, чтобы проверить, можете ли вы сделать правильное назначение.

2 FormCollection

Вы можете попытаться получить в качестве параметра в методе Search данные формы (FormCollection) и проверить, получаете ли вы то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...