Telerik Grid and Circular reference exception



我想试试这个

Telerik Grid抛出一个循环引用异常,当我试图使用一个实体框架poco类到他的绑定。链接中提到的代码建议用NewtonSoft的json序列化器替换Telerik使用的json序列化器。但是Telerik Grid从不调用CustomGridActionResultFactory注入到Grid中的create方法。有人知道这个代码(上面的链接)的问题吗?

有一个代码库项目,它展示了如何创建自定义GridActionResultFactory。

你应该为TelerikGrid使用一个"特殊的"视图模型。

例如,如果你使用一个像这样的数据库模型

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; }   
}  

如果您和我一样,认为仅仅为teleerik网格创建一个单独的视图模型是多余的,您可以将自己的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

相关内容

  • 没有找到相关文章

最新更新