2017-08-07 46 views
0

我的控制器方法:ASP.NET正确类型的映射方法时包含对象字典作为值

public async Task<ActionResult> Manage(GeneratorSchema schema) 

GeneratorSchema:

public class GeneratorSchema 
{ 
    public Guid Id { get; set; } 
    public GeneratorTypes Type { get; set; } 
    public Dictionary<string, object> Payload { get; set; } 
} 

实施例的数据发送形式通过POST:

<input name="Id" value="*ValidGuid*" /> 
<input name="Type" value="*ValidEnum*" /> 
<input name="Payload[Name]" value="Kevin" /> 
<input name="Payload[Age]" value="22" /> 
<input name="Payload[Balance]" value="0,55" /> 

当这个表单被发送时,控制器正确地将其映射为GeneratorSchema对象,但是当涉及到d ictionary我收到正确的键,但这些键的值是一个字符串数组,其中只有一个字符串,其中是来自表单的值。我假设它是因为字典的值被设置为object类型。

如何解析字典数据,使数值具有正确的类型而不使用数组?

回答

0

现在我已经开发了一个非常基本的答案。

 foreach(var key in schema.Payload.Keys.ToList()) 
     { 
      if(schema.Payload[key].GetType().IsArray) 
      { 
       string[] value = schema.Payload[key] as string[]; 
       schema.Payload[key] = value[0]; 

       double dValue; 
       if (double.TryParse((string)schema.Payload[key], out dValue)) 
        schema.Payload[key] = dValue; 
      } 
     } 
相关问题