我使用第三方库并且无法真正改变将数据发布到MVC 5控制器的方式。
我无法弄清楚如何设置我的模型来接收数据。
json是一个跟随......
{
"expiration":"2015-06-14T21:02:52.969Z",
"conditions":[
{"acl":"private"},
{"bucket":"anyoldbucket"},
{"Content-Type":"application/pdf"},
{"success_action_status":"200"},
{"key":"somekey"}
]
}
我尝试像这样设置我的模型......
public class AwsSignatureRequestViewModel
{
public DateTime expiration { get; set; }
public Dictionary<string, string> conditions { get; set; }
}
到期日期已正确填写,我得到了正确数量的条件,但字典的键是数字(索引),值为空
有什么建议吗?
答案 0 :(得分:0)
如果您的模型是严格的,则需要为每个子对象创建对象。 但是如果你有一个动态模型,你可以从你的请求中读取原始字符串并用Json.net解析它。
public ActionResult Test(string model)
{
Request.InputStream.Seek(0, SeekOrigin.Begin);
string jsonData = new StreamReader(Request.InputStream).ReadToEnd();
var dynamicObject = JObject.Parse(jsonData);
...
}
dynamicObject将包含所有json。
答案 1 :(得分:0)
IINM,根据您获得的数据,您的AwsSignatureRequestViewModel
应如下所示:
public class AwsSignatureRequestViewModel
{
public DateTime expiration { get; set; }
public List<Dictionary<string, string>> conditions { get; set; }
}
conditions
是一个“对象数组”。
您目前拥有模型的方式,数据会映射到类似的东西(事实并非如此):
{
"expiration": "2015-06-14T21:02:52.969Z",
"conditions":
{
"acl": "private",
"bucket": "anyoldbucket",
....
},
.....
... H个