Telerik Grid和Circular引用异常

时间:2011-11-30 15:43:58

标签: grid json.net telerik-mvc circular-reference

I would like to try this

当我尝试将entityframework poco类用于绑定时,Telerik Grid会抛出一个循环引用异常。链接中提到的代码建议将Telerik使用的json序列化程序替换为NewtonSoft序列化程序。但Telerik Grid从未将CustomGridActionResultFactory中的create方法调用到Grid中。有人知道这段代码的问题(link above)吗?

3 个答案:

答案 0 :(得分:0)

有一个code library project,它显示了如何创建自定义GridActionResultFactory。你可能会发现它很有帮助。

答案 1 :(得分:0)

您应该为Telerik Grid使用“特殊”视图模型。例如,如果您使用类似这样的数据库模型

public class Master {  
    public int Id { get; set; }  
    public string Name { get; set; }  
    public List<Detail> Details { get; set; }   
}  

public class Detail {  
    public int Id { get; set; }  
    public string Name { get; set; }  
    public Master Master { get; set; }   
}  

您需要创建视图模型,如下所示

public class MasterView {  
    public int Id { get; set; }  
    public string Name { get; set; }   
}  

public class DetailView {  
    public int Id { get; set; }  
    public string Name { get; set; }  
    public int MasterId { get; set; }   
}  

答案 2 :(得分:0)

如果您喜欢我,请考虑为telerik网格创建单独的视图模型是过度的,您可以将自己的Json提供给从匿名对象列表创建的网格:

//This goes in the View:
Html.Telerik().Grid(Model)
    .Name("Grid")
    .Columns(columns =>
    {
    // your column mappings go here
    })
    .DataBinding(dataBinding => dataBinding.Ajax().Select("_yourMethodReturningJson", "YourControllerName", new { yourJsonMethodParameter = yourViewModel.someField }))
    .Pageable()
    .Sortable()
    .Render();

控制器中的Json方法如下所示:

    public JsonResult _yourMethodReturningJson(YourType? yourJsonMethodParameter)
    {
        var list = database.SomeCollection.Select(x => new
            {
                SomeColumnName = x.SomeField
            });
        return Json(list, JsonRequestBehavior.AllowGet);

    }

如果您愿意,可以在这里使用更好的Json库:http://james.newtonking.com/pages/json-net.aspx