У меня проблемы с тем, чтобы заставить работать модель Binder. Я подумал, что это jQuery, поэтому я задал этот вопрос , но после дальнейшего изучения я вижу, что jQuery действительно отправляет параметр на сервер. Вот почему я задаю новый вопрос - это больше не проблема jQuery, как я изначально думал.
Справочная информация:
Я отправляю запрос GET в мой метод действия следующим образом:
$.get($(this).attr("href"), { "searchExpression": "schroders" }, function (result) {
// do stuff
}, "html");
это создает следующий URL:
http://localhost:65091/search/Tabs?searchExpression=schroders
Я думал, что это сработало, и заполнил метод действия:
public PartialViewResult Tabs(string searchExpression)
{
return PartialView(new SearchViewModel
{
PagedFunds = _fundService.GetFunds(searchExpression)
});
}
но маршрут к этому методу определяется как:
routes.MapRoute(
null,
"search/{action}/{searchExpression}",
new { controller = "search", action = "QuickSearch", searchExpression = "" }
);
Как мы видим, searchExpression ожидается в качестве параметра URL, а не параметра строки запроса. Я не думал, что это будет проблемой, но если я перегружу Tabs
следующим образом:
public PartialViewResult Tabs(string searchExpression, string query)
{
return PartialView(new SearchViewModel
{
PagedFunds = _fundService.GetFunds(searchExpression)
});
}
и изменить
{ "searchExpression": "schroders" }
до
{ "query": "schroders" }
Заполняется параметр query
в методе действия.
Вопрос:
Итак, мой вопрос: что нужно изменить, чтобы заполнить searchExpression? Нужно ли мне изменять jQuery, чтобы он добавлял «шредеры» к URL, так что это похоже на
/search/Tabs/schroders
В идеале я мог бы иметь лучшее из обоих миров, где пользователь мог бы ввести URL с поисковым термином, и я мог бы также использовать $ .get таким образом, чтобы я мог передать поисковый термин в качестве параметра в $ Функция .get.