2015-03-28 4 views
3

Я использую веб-API (часть ASP.NET MVC 5), и я пытаюсь привязать значения квеста к Dictionary<int, bool>.Значения привязки привязки к словарю

Мой метод Web API просто:

[HttpGet] 
[Route("api/items")] 
public IQueryable<Item> GetItems(Dictionary<int, bool> cf) 
{ 
    // ... 
} 

Если я пытаюсь вызвать этот URL:

/api/items?cf[1009]=true&cf[1011]=true&cf[1012]=false&cf[1015]=true 

Параметр cf всегда null.

Как передать словарь значений через QueryString в метод Web API?

ответ

0

Существует нет встроенного способа сделать это. В этом случае «cf [1009]» - это имя параметра, а не «cf». Вы можете написать собственный синтаксический анализатор строк запроса, чтобы добиться того, что вам нужно. Лучше подпись будет:

/api/items?cf=1009&cf=1011&cf=1015 

И вы связываете его с помощью:

public IQueryable<Item> GetItems(List<int> cf) 
{ 
    // ... 
} 
+0

Это не соответствует требованиям OP в. Необходима дополнительная информация о записях 'cf': т. Е.« Истина »или« ложь ». –

0

Вы можете создать ModelBinder для словаря, как описано в этом посте:

https://stackoverflow.com/a/22708383

+1

Хотя эта ссылка может ответить на вопрос, [лучше] (// meta.stackoverflow.com/q/8259) включить основные части ответа здесь и предоставить ссылку для справки. – Keale

1

Если вы хотите передать словарь (в основном ключ и пару значений), используя параметр строки запроса, то вы должны использовать формат: &parameters[0].key=keyName&parameters[0].value=keyValue

В моем методе действий подписи, параметры определяются как:

Dictionary<string,string> parameters 

Надеется, что это помогает.

Я смог оценить это самостоятельно после прочтения this post от Scott Hanselman. Так спасибо Скотту !!

Спасибо, Nirav

Смежные вопросы