【发布时间】:2017-01-30 13:47:17
【问题描述】:
我的 MVC 应用程序在处理 FormulaData 对象后返回 ResultObjekt。这是一个通过 HTTP-Post 调用的 REST API
[HttpPost]
[ActionName("GetResult")]
public ResultObjekt GetResult([FromBody]FormularData values)
{
}
问题:有没有办法将values 中的所有属性读入Dictionary<string, string> 或IEnumerable<KeyValuePair<string, string>>?
例如
public class FormularData
{
public string Item1 { get; set; }
public string Item2 { get; set; }
}
应该生成Dictionary<string,string>() 或IEnumerable<KeyValuePair<string, string>>
值{ {"Item1","Value1"}, {"Item2","Value2"}}
我之前的解决方案使用Querystring 和HttpGet 而不是HttpPost,因为我改变了,Request.GetQueryNameValuePairs().ToDictionary(x => x.Key, x => x.Value) 不再起作用。
这是我目前的 - 不是那么漂亮的解决方案:
[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();
}
【问题讨论】:
-
您能不能只将
values参数定义为IDictionary<string, object>,除非您需要将其绑定到您的FormerData 类? -
@Toshi,
ResultObjekt GetResult([FromBody]Dictionary<string, object> values)应该也可以工作 -
@Corporalis 我不能同时使用吗? FormularData 类和字典?
-
@Toshi 模型绑定不能这样工作。这是一个或另一个。要么保留你的模型,然后使用反射来构建字典,要么使用字典作为模型。
-
@Toshi,举例说明你打算如何通过模型。
标签: c# asp.net-mvc