Mam aplikację MVC, która zwraca ResultObjekt
po przetworzeniu obiektu FormulaData
. To odpoczynek API o nazwie poprzez HTTP-PostMVC przekazujący parametr postu do słownika
[HttpPost]
[ActionName("GetResult")]
public ResultObjekt GetResult([FromBody]FormularData values)
{
}
Pytanie: Czy istnieje sposób, aby odczytać wszystkie właściwości z values
w Dictionary<string, string>
lub IEnumerable<KeyValuePair<string, string>>
?
np.
public class FormularData
{
public string Item1 { get; set; }
public string Item2 { get; set; }
}
powinny wynik w Dictionary<string,string>()
lub IEnumerable<KeyValuePair<string, string>>
z wartościami { {"Item1","Value1"}, {"Item2","Value2"}}
Moje poprzednie rozwiązanie pracował z Querystring
i HttpGet
zamiast HttpPost
i odkąd zmienił Request.GetQueryNameValuePairs().ToDictionary(x => x.Key, x => x.Value)
już nie działa.
Oto mój obecny - nie tak całkiem rozwiązanie:
[HttpPost]
[ActionName("GetResult")]
public ResultObjekt GetResult([FromBody]FormularData values)
{
List<KeyValuePair<string, string>> list = new List<KeyValuePair<string, string>>();
if (!string.IsNullOrEmpty(values.Item1))
{
list.Add(new KeyValuePair<string, string>("Item1", values.Item1));
}
if (!string.IsNullOrEmpty(values.Item2))
{
list.Add(new KeyValuePair<string, string>("Item2", values.Item2));
}
IEnumerable<KeyValuePair<string, string>> result = list.AsEnumerable();
}
Nie można po prostu zdefiniować 'values' param jako 'IDictionary', chyba że potrzebujesz go powiązanego z twoją klasą FormularData? –
Corporalis
@Toshi, 'ResultObjekt GetResult ([FromBody] Dictionary values)' Powinien także działać –
Nkosi
@Corporalis nie mogę używać obu? klasa FormularData i słownik? – Toshi