Json.Encode()
Helper是否使用JavaScriptSerializer
类将字符串编码为json?
使用Json.Encode(Model)
时,我收到循环引用异常,即使我的序列化类属性具有[ScriptIgnore]
属性。
我唯一的猜测是,Json.Encode()
帮助器可能不会使用JavaScriptSerializer序列化为json,但我无法在msdn上的任何地方找到文档。
@Html.Raw(Json.Encode(Model))
以下是其中一个具有不应序列化的属性的模型示例...
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Web.Script.Serialization;
namespace RobotDog.Entities {
public class Character {
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[MaxLength(200)]
public string Name { get; set; }
public virtual Person Person { get; set; }
[ScriptIgnore]
public virtual Movie Movie { get; set; }
}
}
答案 0 :(得分:6)
Json.Encode()Helper是否使用JavaScriptSerializer类将字符串编码为json?
是
来自源代码:
private static readonly JavaScriptSerializer _serializer = Json.CreateSerializer();
public static string Encode(object value)
{
DynamicJsonArray dynamicJsonArray = value as DynamicJsonArray;
if (dynamicJsonArray != null)
return Json._serializer.Serialize((object) (object[]) dynamicJsonArray);
else
return Json._serializer.Serialize(value);
}
其中JavaScriptSerializer
为System.Web.Script.Serialization.JavaScriptSerializer
也可以帮助您解决问题,请参阅this thread
答案 1 :(得分:0)
http://msdn.microsoft.com/en-us/library/system.web.helpers.json.encode(v=vs.111).aspx
根据上面的链接Json.Encode使用system.web.helpers。
您的模型包含哪些内容?
另外,您确定[ScriptIgnore]会忽略您分配给它的内容吗?