Telerik Grid и циркулярная ссылка исключение - PullRequest
0 голосов
/ 30 ноября 2011

Я хотел бы попробовать это

Telerik Grid вызывает исключение циклической ссылки, когда я пытаюсь использовать класс poco entityframework в его привязке.Код, упомянутый в ссылке, предлагает заменить сериализатор json, используемый Telerik, на NewtonSoft.Но Telerik Grid никогда не вызывает метод create из CustomGridActionResultFactory, внедренный в Grid.Кто-нибудь знает проблему с этим кодом ( ссылка выше )?

Ответы [ 3 ]

0 голосов
/ 19 декабря 2011

Вы должны использовать «специальную» модель представления для 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; }   
}  

Вам необходимо создать View Model, как указано ниже

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 голосов
/ 28 апреля 2013

Если вы мне нравитесь, подумайте, что создание отдельных моделей представлений только для сетки 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

0 голосов
/ 03 декабря 2011

Существует проект библиотеки кодов , который показывает, как создать пользовательский GridActionResultFactory. Вы можете найти это полезным.

...