我的模型附带了一个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中有用的东西?
您可以将Dictionaty<string, string>
映射到一个新的object
,然后使用Json:返回它
映射:(来自另一个问题(
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"
}