FormulaData
对象后返回一个ResultObject
。这是通过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();
}
FormulaData
对象,则需要将其中一个作为参数进行指定,并在动作中进行映射。请问您是否真的需要两者,若是,请说明原因(考虑重构)。我假设您提供的控制器动作只是为了展示映射而进行简化。 - Corporalis