вопрос о дизайне asp mvc:единое представление для нескольких типов данных

StackOverflow https://stackoverflow.com/questions/2010100

  •  18-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

Как насчет более продвинутого отображения ORM, которое объединяет их все в единый объект?

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top