第一个问题,请原谅任何礼节都失败。
我第一次使用MVC,我有一个局部视图,用户可以在“访问”中添加“访问者”。我找到another SO q/a that detailed overriding ExecuteResult in JsonResult to use Json.Net for serialization,但因为它仍然没有得到理想的结果。
我想我的问题是:我的对象没有正确设置Json.Net以正确序列化属于复杂类型集合的属性,或者我只是没有正确地序列化它们?
以下是“访问”类:
[Serializable]
public class Visit
{
public int Id {get;set;}
public DateTime Date {get;set;}
public List<Visitor> Visitors {get; set;}
}
'访客'类:
[Serializable]
public class Visitor
{
public int Id {get;set;}
public string Name {get;set;}
}
和ActionResult:
public ActionResult AddVisitor(int VisitId, Visitor visitor)
{
Visit visit = new Visit(visitId);
visit.Visitors.Add(visitor);
var result = new JsonResult()
{
Data = new { ok = true, url = Url.Action("Visitors", "Visit", visit) }
}
}
...这是给我跟随网址的:
http://localhost:56296/Visit/Visitors/1?Date=08%2F14%2F2014%2008%3A57%3A42
&Visitors=System.Collections.Generic.List%601%5BCATSVisitor%5D
(请注意,'visitor'属性只有名称,它似乎没有序列化内容)
我假设序列化字符串实际上是这样的:
{
"Id": "1",
"Date": "2014-08-14",
"Visitors":"List<Visitors>"
}
我真正想要的地方是:
{
"Id": "1",
"Date": "2014-08-14",
"Visitors": [{"Id" : "1","Name":"Bob"},{"Id" : "2","Name":"Jane"}]
}