Что касается Html-помощников, входит ли код доступа к данным в класс помощников? - PullRequest
0 голосов
/ 07 декабря 2011

Я пишу вспомогательный класс для запроса моего фида Zenfolio, возврата и отображения изображений. Прямо сейчас этот код разделен между моделью представления и кодом в моем контроллере. Я хочу собрать его во вспомогательный класс. Будет ли весь код идти в помощник, или я все еще делю код между различными классами с помощником, отвечающим только за генерацию HTML? Я погуглил, но не нашел ответа на свой вопрос.

Ответы [ 3 ]

3 голосов
/ 07 декабря 2011

В шаблоне MVC существует четкое разделение между моделью (данными), видом (html) и контроллером (что дает модель виду).

Чтобы ответить на ваш вопрос, нет. Загрузите ваши модели в контроллер. Отобразите их в своем представлении. Html Helpers должны генерировать html только для вашего просмотра.

Возможно, вы захотите использовать DisplayTemplate , который позволяет использовать один и тот же шаблон просмотра для каждой модели определенного типа.

2 голосов
/ 07 декабря 2011

Я бы не делал доступ к данным из представления.Это звучит как хороший вариант использования для действия и повторного использования кода с помощью метода RenderAction.Вы можете пометить действие как дочернее действие, используя атрибут [ChildActionOnly], который гарантирует, что оно не может быть вызвано непосредственно из HTTP-запроса, и возвращает результат PartialView.

HTML-помощники действительно должны использоватьсягенерировать HTML-теги из данных, взятых из ViewData или Model (то есть, из вашей модели представления в этом случае).

1 голос
/ 10 августа 2013

Доступ к данным в HtmlHelper - только боль.

Мне посчастливилось унаследовать проект, в котором специальный SQL был помещен в HtmlHelpers вторым разработчиком проекта. HtmlHelpers были прекрасно написаны первым разработчиком, а специальный SQL почти полностью свел на нет все время и усилия, вложенные в создание сервис-ориентированной архитектуры, с ORM (кэш 2-го уровня стал бесполезным), шаблоном единицы работы (транзакции, ничего не стоящие) и каждый аспект дизайна. В конце концов, этот второй разработчик должен был делать все больше и больше HtmlHelpers, чтобы разные элементы могли совместно использовать доступ к данным.

Первоначально это было сделано для режима отображения, а редактирование было выполнено через кучу уродливых пользовательских javascript. В общем, когда страница отображалась, она сделала 600 синхронных обращений к базе данных.

...