2011-11-30 45 views
0

I would like to try thisTelerik的電網和循環引用異常

Telerik的電網拋出一個循環引用異常,當我嘗試使用的EntityFramework POCO類爲他的結合。鏈接中提到的代碼建議用NewtonSoft替換Telerik使用的json序列化程序。但Telerik Grid永遠不會從注入Grid的CustomGridActionResultFactory調用create方法。有人知道這個代碼的問題(link above)嗎?

回答

0

有一個code library project它顯示瞭如何創建一個自定義的GridActionResultFactory。您可能會發現它很有幫助。

0

您應該爲TelerikGrid使用「特殊」視圖模型。

對於examle如果你使用一個數據庫模型是這樣的

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