Сетка многоразового использования MVC - PullRequest
1 голос
/ 18 июля 2009

В моей структуре веб-приложения (в настоящее время WebForms) у меня есть элемент управления, который ведет себя как классическая таблица свойств. Он инициализируется идентификатором объекта (ключом базы данных), затем считывает метаданные, чтобы определить тип объекта и атрибуты объекта. Он отображает атрибуты, строковые атрибуты в виде текстовых полей, атрибуты bool в виде флажков, атрибуты перечисления в виде раскрывающихся списков. На странице отправки есть метод элемента управления ctrl.SaveData (), который сохранил измененные значения атрибута обратно в базу данных.

Дерево управления WebForm и модель событий прекрасно поддерживают этот подход. Теперь я спрашиваю себя, возможно ли достичь подобного решения для ASP.NET MVC. Основная цель состоит в том, чтобы иметь общий, многократно используемый компонент, который можно применять в различных ситуациях без особых хлопот. Кроме того, решение должно быть достаточно гибким, чтобы размещать несколько экземпляров компонента для нескольких объектов на одной странице. Здесь также помогли автоматически созданные HTML-идентификаторы WebForms.

Мне очень любопытны ваши идеи! Большое спасибо за ответ!

1 Ответ

1 голос
/ 18 июля 2009

Этого можно добиться, используя пользовательскую ViewModel, которая содержит достаточно метаданных для идентификации редактируемого / сохраняемого объекта. Вы должны использовать это в сочетании с частичным представлением, которое визуализирует ViewModel. Главная страница будет использовать метаданные в ViewModel, чтобы либо направить публикацию к определенному действию контроллера, чтобы сохранить этот конкретный объект, либо передать метаданные обратно к общему действию (возможно, в качестве скрытых входных данных), чтобы это действие могло выбрать правильный таблица, в которой сохраняются данные.

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

...