我的模型上附加了一个Dictionary<string,string>
。当它到达客户端时,会正确地反序列化为[{"Text":"bla","Value":"V1"},{"Text":"abc","Value":"V2"}, {"Text":"def","Value":"V3"}]
。
它是由我的控制器中的语句return View(model);
发送的。
但是当我通过JsonResult使用以下命令向下发送相同的数据时:
var jsonResult = Json(myDictionary, JsonRequestBehavior.AllowGet);
jsonResult.MaxJsonLength = int.MaxValue;
return jsonResult;
结果如下:
{V1: "{ Value = V1, Text = bla }", V2: "{ Value = V2, Text = abc }", V3: "{ Value = V3, Text = def }"}
是否可以在.NET中解决此问题,还是必须解析此问题并将其重构为javascript中有用的内容?
答案 0 :(得分:0)
您可以将Dictionaty<string, string>
映射到新的object
中,然后使用Json返回它:
映射:(来自另一个question)
var dict = new Dictionary<string, string> { { "Property", "foo" } };
var convertedObject = new ExpandoObject();
var eoColl = (ICollection<KeyValuePair<string, object>>)convertedObject;
foreach (var kvp in dict)
eoColl.Add(kvp);
dynamic eoDynamic = convertedObject;
然后通过JSON返回(如您已经做的那样):
return Json(convertedObject, JsonRequestBehavior.AllowGet);
并像普通对象一样接收JavaScript:
{
V1: "bar",
V2: "foo",
V3: "caa"
}