Лучший отвечающий
Telerik grid для MVC

Вопрос
-
Здравствуйте. Использую компонент Telerik Grid для вывода данных. Загвоздка в том что контроллер возвращает не модельку, а список. Т.е. вот что у меня возвращает контроллер:
var campaigns = (from c in context.Campains where c.UserId == UserContext.CurrentUserId orderby c.CampainId select new { CreationTime = c.CreationTime, Name = c.Name, CampainId = c.CampainId, CampainGroupsCount = c.CampainGroups.Count(), CampignContects = (from pr in context.CampainContacts where pr.CampainId == c.CampainId select pr).Count(), Processed = 100*(from pr in context.CampainContacts where pr.CampainId == c.CampainId && (int)pr.ProcessStatus!=0 select pr).Count() / (from pr in context.CampainContacts where pr.CampainId == c.CampainId select pr).Count() }).ToList();
А во вьюхе телериковский грид требует указать ему модельку.
@Html.Telerik().Grid(Model).Name("Grid").EnableCustomBinding(true).Pageable().Columns(columns => { columns.Bound("CreationTime").Title("время"); })
Собственно если контроллер вернет это:
var camp = from c in context.Campains select c;
то всё будет нормально. А мне надо вернуть мой собственный набор данных, как в первом методе.
P.S. @model IEnumerable<MyClass> - закомментил... Не могу понять как привязать Telerik Grid к моему собственному набору данных.
- Изменено Boguyang 24 декабря 2013 г. 8:44
24 декабря 2013 г. 8:39
Ответы
-
Переименуйте ваш класс на ViewModelMyClass, тогда проблем возникнуть недолжно.
Сделаем содержимое сообщества лучше, вместе!
- Помечено в качестве ответа Boguyang 25 декабря 2013 г. 7:59
25 декабря 2013 г. 5:58Модератор
Все ответы
-
Делайте выборку не анонимного объекта, а вашего.
select new MyClass() { //....... };
Сделаем содержимое сообщества лучше, вместе!
24 декабря 2013 г. 9:41Модератор -
Хмм... Спасибо за ответ. Честно говоря я пытался прописать в модельке свои поля и делать выборку как экземпляр своей модельки. Но так как база данных создана из кода, студия просит обновить миграции и базу данных. Можно ли что-то прописать чтобы созданные мною поля игнорировались? (Чтобы я их юзал только в моих запросах).25 декабря 2013 г. 3:24
-
Переименуйте ваш класс на ViewModelMyClass, тогда проблем возникнуть недолжно.
Сделаем содержимое сообщества лучше, вместе!
- Помечено в качестве ответа Boguyang 25 декабря 2013 г. 7:59
25 декабря 2013 г. 5:58Модератор -
Спасибо за ответы! Создал небольшой класс-обёртку для модельки и в нем прописал новые поля. Результат запроса помещаю в экзепмляр класса-обертки. Во вьюхе тип модели указан как класс-обертка. Всё работает как надо. Насколько корректен такой способ?
- Изменено Boguyang 25 декабря 2013 г. 8:02
25 декабря 2013 г. 8:01 -
Это стандартный подход. Шаблон DTO. Он особенно полезен, кода вам нужно передать данные из нескольких источников как одну модель.
Сделаем содержимое сообщества лучше, вместе!
25 декабря 2013 г. 8:04Модератор -
Классно)) Надо конечно углублять знания в ООП. Спасибо Вам большое за оперативные ответы!
P.S. шаблон DTO юзал в Java Struts... но в голову почему-то не пришло сразу
- Изменено Boguyang 25 декабря 2013 г. 8:07
25 декабря 2013 г. 8:06