asp mvc design question: единое представление для нескольких типов данных - PullRequest
0 голосов
/ 06 января 2010

В моей базе данных, возможно, есть десяток таблиц, которые представляют типы поиска (у всех есть столбцы ID и Имя - нет, они должны оставаться в виде отдельных таблиц, не будут нормализованы в одну таблицу). Я создаю приложение для администрирования, в котором я хочу, чтобы администратор мог добавлять / редактировать / удалять / перечислять все эти поиски. Я знаю, что могу повторно использовать модель, но есть ли для меня более эффективный способ написать это в приложении asv mvc 2, кроме записи 3 представлений, по 1 контроллеру для каждого типа поиска, что дает 48 представлений и 12 контроллеров?

Ответы [ 4 ]

1 голос
/ 06 января 2010

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

Может быть, попытаться сделать то, что вы пытаетесь, используя главную страницу, и вместо этого ваши модели наследуют из общего базового класса или что-то в этом роде? Таким образом, вы можете повторно использовать код, не разбивая его на одни и те же файлы.

0 голосов
/ 06 января 2010

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

Извините, мой ответ состоит в том, чтобы перейти к 48 представлениям и 12 контроллерам ... настроить код поколения так, чтобы, если вы добавляете больше типов поиска, все, что вам нужно сделать, это повторно запустить код и boom, контроллеры и представления настроены.

0 голосов
/ 06 января 2010

Я бы сделал это с одним контроллером и действием / представлением для каждой операции CRUD (1x4). Когда и если схема изменится на одну или несколько таблиц поиска, я бы с этим справился. В противном случае подумайте о том, какую работу нужно выполнить, если вы добавите столбец в каждую из таблиц: вам придется обновить 48x12 или любые другие файлы.

Особенности того, как вы это делаете, зависят от вашей модели, но это можно сделать, просто используя ADO.NET и возвращая DataTable или аналогичный, заполненный динамическим оператором SQL, где имя таблицы предоставляется представлением. Конечно, вы должны были бы защититься от внедрения SQL, если бы вы использовали конкатенацию строк.

Представление Создать также будет использовать имя таблицы, полученное из опубликованной формы, чтобы знать, какую таблицу обновлять с опубликованными данными.

0 голосов
/ 06 января 2010

А как насчет более продвинутого сопоставления ORM, которое объединяет все их в одну сущность?

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