Я использую ASP.NET MVC для разделения своих HTML-представлений из моих моделей. Однако есть определенная ситуация, которая меня немного сбивает с толку.Вспомогательные методы для генерации небольших фрагментов HTML
У меня есть несколько широко используемых небольших панелей информации, которые сами состоят из нескольких небольших панелей информации. они получают свои данные из подкласса, содержащегося в различных моделях, иногда отдельных экземпляров, иногда списков объектов.
В настоящее время это делается с помощью частичных представлений, передавая соответствующую часть данных с помощью параметра модели, как таковой:
@Html.Partial("UserInfo", this.Model.CurrentUser);
@Html.Partial("UserInfo", reply.PostedBy);
И так далее. Все это прекрасно работает.
Я недавно воспользовался требованием, которое чувствует, что оно растягивает разумные пределы для этой модели, однако - оно будет включать в себя очень большое количество частичных представлений с количеством слов TINY в каждом, вложенным много раз. Время разрешения страницы, похоже, начинает немного выходить из-под контроля, и я подозреваю, что объем поиска и отражения частичных представлений может иметь какое-то отношение к нему.
Обратите внимание: Я предполагаю, что дублирующий HTML, который должен быть тем же, все еще следует избегать. Я мог бы упростить гнездо, имея копии HTML в некоторых элементах управления более высокого уровня, но мне кажется, что это повреждает ремонтопригодность.
Для внутреннего большинства мне кажется более целесообразным создавать статические вспомогательные классы, которые генерируют и возвращают требуемый HTML-код, однако, несмотря на то, что сам MVC делает это с помощью класса-помощника , он чувствует себя так идет против шаблона MVC.
- Можно ли использовать статические вспомогательные классы для генерации небольших фрагментов HTML?
- Куда стоит статический класс
UserInfo
? Просмотры? Контроллеры? В другом месте?
Очевидно, что этот подход по-прежнему отделяет вспомогательный метод от модели, но поскольку для работы требуется модель, я действительно не вижу, насколько она несвязана.
Статический помощник - это ширина волосков от метода расширения, потребляемого в способе, который, по-видимому, делает весь подход действительно похожим на простое добавление вспомогательного метода к модели. Это, конечно, то, что MVC пытается уйти от прежде всего!
Обратите внимание: Я не пытаюсь прокрасться по правилам или жаловаться! Я просто хочу подходить к этому как «по шаблону», насколько это возможно. Если будет много и много частичных представлений, я буду придерживаться этого и настроить производительность, насколько это возможно.
Извинения за медленный ответ - фантастический, спасибо за это, именно то, что мне было нужно. Сейчас я использую все эти подходы в зависимости от уровня требуемых данных, баланса html/code и т. Д., Который сохраняет все гораздо более аккуратным. – Octopoid