размещение классов в NerdDinner - PullRequest
1 голос
/ 26 февраля 2011

Я изучаю ASP.NET MVC и смотрю пример приложения ASP.NET MVC NerdDinner .

  1. Папка «Модели» содержит класс с именем Dinner.cs. Это главная сущность Ужина. Разве этот класс не должен быть в другом месте? Например "Домен"? И вместо этого следует поместить класс viewmodel в папку Models, которая содержит информацию об обеде?

  2. Почему файл «PaginatedList.cs» находится в папке «Помощники». Разве этот файл не должен находиться в папке «Модели», поскольку он предоставляется для просмотра?

Любое разъяснение по этому поводу будет оценено!

Ответы [ 2 ]

1 голос
/ 26 февраля 2011

для первого вопроса, файл Dinner.cs содержит часть класса Dinner вместе с некоторыми атрибутами проверки класса приятеля.ИМХО, совершенно разумно поместить этот файл в папку Model, так как он на самом деле является частью модели решения.

для вашего второго вопроса PaginatedList - это своего рода структура данных, которая позволяет вам одновременно просматривать определенную «страницу» ваших данных (фиксированный набор элементов).Я на самом деле не вижу, что это ViewModel, «помощник» - это именно то, чем он является.

Еще одна вещь, которую я хотел бы добавить, если у вас есть несколько моделей представления, которые вы передаетепредставления вместо реальных классов моделей или из-за того, что у вас есть определенный набор элементов данных для передачи, я думаю, что было бы разумно иметь для этого отдельную папку ViewModel.

Надеюсь, это поможет:)

1 голос
/ 26 февраля 2011
  1. Конечно, вы думаете об этом правильно. NerdDinner сделан только для представления концепций и не претендует на все лучшие практики. Это становится все более очевидным по мере роста вашего собственного проекта. Ваши доменные объекты / службы / репозитории будут находиться в отдельной папке, затем в отдельном проекте, а затем, возможно, в отдельном решении. Вы переименуете эту папку в ViewModels, чтобы сделать ее более понятной для других людей, работающих над проектом.

  2. PaginatedList может быть моделью представления и содержать данные, относящиеся к нумерации страниц. Затем его можно поместить в папку ViewModels. Но я верю, что у вас есть в NerdDinner - это просто простой помощник View для создания разметки нумерации страниц. Более того, помощники могут быть не такими строгими «View» или «ViewModel» - они могут содержать простую логику, они находятся посередине :) между View и ViewModel. Также обратите внимание, что PaginatedList - это скорее «базовая» проблема, чем «конкретное решение». Таким образом, вы не можете поместить его в папку «Представления» или «Модели» среди специфических для проекта вещей. Так что «Хелперы» достаточно хороши для NerdDinner. В реальном решении вам лучше сделать его распространенным, включить его в свой «фреймворк» поверх MVC.

...