I would like to try thisTelerik的電網和循環引用異常
Telerik的電網拋出一個循環引用異常,當我嘗試使用的EntityFramework POCO類爲他的結合。鏈接中提到的代碼建議用NewtonSoft替換Telerik使用的json序列化程序。但Telerik Grid永遠不會從注入Grid的CustomGridActionResultFactory調用create方法。有人知道這個代碼的問題(link above)嗎?
I would like to try thisTelerik的電網和循環引用異常
Telerik的電網拋出一個循環引用異常,當我嘗試使用的EntityFramework POCO類爲他的結合。鏈接中提到的代碼建議用NewtonSoft替換Telerik使用的json序列化程序。但Telerik Grid永遠不會從注入Grid的CustomGridActionResultFactory調用create方法。有人知道這個代碼的問題(link above)嗎?
有一個code library project它顯示瞭如何創建一個自定義的GridActionResultFactory。您可能會發現它很有幫助。
您應該爲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; }
}
給出如果你和我一樣,認爲創建一個獨立的視圖模型只是爲了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