Я использую jqGrid
для отображения некоторых данных пользователю. Одной из функций, необходимых для пользователей, является возможность поиска в сетке. Я использую Службу данных WCF, чтобы получить эти данные и вернуть их.
Когда я только начал разработку jqGrid, мне просто нужно было разбить на страницы (поиск не требовался) и я смог успешно использовать следующий метод:
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public String GetStuff(int? page, int? rows)
{
// pagination going on in here
}
Затем мне понадобился поиск, поэтому я добавил параметр типа string
примерно так:
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public String GetStuff(int? page, int? rows, string search)
{
// more stuff going on in here
}
и тогда я получаю 400 Bad Request
ошибку. Я предполагаю, что это из-за параметра поиска, я просто не понимаю, почему int
работает (и даже bool
работает), но string
нет. Связано ли это с тем, что службы данных WCF являются RESTful?
Я, конечно, дважды проверил строку запроса, которую jqGrid отправляет (через ajax), и она соответствует имени параметра. Есть некоторые дополнительные строковые параметры запроса, которые отправляет jqGrid, которые не используются (игнорирование их работало нормально с моим исходным кодом разбиения на страницы)