Помощники по конвертации чисел / дат в MVC, где их использовать? - PullRequest
2 голосов
/ 05 ноября 2008

Stackoverflow построен на MVC и выполняет множество простых, но приятных дел с датами и числами (подсчет ответов, голосов и т. Д.). Я предполагаю, что все это делается с помощью пары статических вспомогательных классов.

Мой вопрос: должен ли view вызывать эти вспомогательные объекты или контроллер должен вызывать эти вспомогательные объекты и встраивать результат в ViewData?

  1. Контроллер заполняет данные просмотра

    • Контроллер загружает модель / данные
    • Контроллер использует статический метод DateHelper для преобразования даты в дружественную строку
    • Дружественная строка даты предоставляется для просмотра через ViewData
  2. Контроллер заполняет данные представления вызовами модели и представления DateHelper

    • Контроллер загружает модель / данные
    • Контроллер предоставляет модель для просмотра через ViewData
    • Когда ViewData привязывается к HTML, он вызывает статический метод DateHelper

Я подозреваю, что номер 1 - верный путь, но он кажется немного грязным, так как вы можете взять список моделей, и их легко перебрать в представлении. Если вы обрабатываете и генерируете несколько дружественных строк на основе набора экземпляров модели, а в модели нет места для их присоединения к конкретному экземпляру, вы в конечном итоге отправляете два разных списка данных в ViewData. Правильно?

Ваши мысли ценятся.

Ответы [ 3 ]

7 голосов
/ 05 ноября 2008

В зависимости от того, кого вы спросите, вы получите разные ответы. Мне лично нравится вариант № 2, так как я хочу, чтобы ViewData были необработанными данными и выбирал способ их отображения в представлении. Для меня это совершенно нормально делать в представлении, поскольку это проблема представления.

Тем не менее, я знаю людей из моей собственной команды, которые не согласны со мной, предполагая, что контроллер возвращает модель представления , а не просто модель (я тоже согласен с этим), и она должна справиться все эти преобразования перед отправкой модели на просмотр. Вид в этом случае должен быть очень тупым.

Не думаю, что в этом случае для всех найдется один правильный выбор. Я бы сказал, выбрать один или другой на основе вашего опыта и придерживаться его.

2 голосов
/ 05 ноября 2008

Я думаю, что предпочел бы использовать помощника в представлении. На мой взгляд, то, как визуализируется дата, является предметом, ориентированным на представление. Контроллер просто знает, что представление должно отображать его.

1 голос
/ 05 ноября 2008

Я за вариант 2. Я бы сказал, что это проблема форматирования, которая, на мой взгляд, вызывает беспокойство.

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