2009-07-18 2 views
1

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

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

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

ответ

1

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

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