Как спроектировать вашу viewmodel для расписания? - PullRequest
2 голосов
/ 09 января 2012

У меня есть расписание для студентов, чтобы они могли посещать курсы на неделе.И я не знаю, как мне построить свою ViewModel.

Я решил это:

class CourseTableViewModel
{
    CourseTableHeaderViewModel[] Headers;
    CourseTableRowViewModel[] Rows;
}

class CourseTableRowViewModel
{
    int HourStart;
    CourseTableCellViewModel[] Cells;
}

class CourseTableHeaderViewModel
{
    DateTime Date;
}

class CourseTableCellViewModel
{
    CourseViewModel[] Courses;//null if no course at this time
}

, но для меня это кажется тяжелым для моей модели вида.Может быть, мне следует только отправить CourseViewModel [], а затем в моем cshtml выполнить всю работу с таблицей / строкой / ячейкой.

Должна ли модель представления действительно выглядеть как мое представление?

РЕДАКТИРОВАТЬ: I 'Я покажу мои данные в виде расписания с указанием дней недели в качестве заголовков и строки часа каждого дня.Если курс займет 2 часа, он займет 2 строки.Там будет кнопка «Attend» или «Cancel» в каждой ячейке курса.

PS: я знаю о jquery fullcalendar, но я просто пытаюсь узнать, как построить мою модель представления здесь.

Ответы [ 2 ]

5 голосов
/ 09 января 2012

Некоторые из классов модели вида слишком легкие; CourseTableHeaderViewModel. Как сказал Джон, вам нужно подумать о том, что пользовательский интерфейс будет отображать эти данные, но у меня не было бы заголовков и отдельных строк, но был бы класс (предпочтительно домен), который представляет все данные, которые вам понадобятся, и тогда модель vi9ew представляет собой список этих классов. :

public class Course {
    public int Id {get; set; }
    public DateTime StartTime {get; set; }
    public string Name {get; set; }
    . . . 
    . . .
}

public class CoursesViewModel {
    public List<Course> Courses {get; set; }
    public object SomeReferenceData {get; set; }
    . . . 
    . . . 
}

В зависимости от того, как вы хотите отобразить данные, вы можете отсортировать список курсов с помощью linq, а затем назначить его в модель.

3 голосов
/ 20 января 2012

но для меня это кажется тяжелым для моей модели зрения.Может быть, я должен только отправить CourseViewModel [], а затем в моем cshtml выполнить всю работу с таблицей / строкой / ячейкой.

Способ создания вашей ViewModel НЕ ДОЛЖЕН зависеть от того, как организован View,в противном случае вы нарушите разделение проблем между View и ControllerТот факт, что вы решили использовать своего рода таблицу для показа своих курсов, НЕ ДОЛЖЕН отражаться на ViewModel, в противном случае изменение в организации представления может вызвать цепную реакцию на код контроллера.

Passдля просмотра только ВСЕЙ ИНФОРМАЦИИ, необходимой для рендеринга курсов, а затем в представлении выполните все задания, необходимые для отображения таблицы.

Выполнение преобразований данных в представлении может вызвать проблемы, когда вы находитесь врежим редактирования, потому что обратное преобразование не применяется связывателем модели при получении проведенных данных.Если у вас есть эта проблема, взгляните на встроенные преобразования Mvc Controls Toolkit там: http://mvccontrolstoolkit.codeplex.com/wikipage?title=In-Line%20Transformations

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...