выберите использование списка в asp.net mvc

Я работаю над сайтом MVC, который впервые сделал моя компания. Одна из вещей, которые я часто выполняю, - это создание списков выбора в контроллере, помещение их в viewdata и чтение их при создании html.DropDownList. Есть несколько вещей, которые меня так воняют в том, как я это делаю.

  1. некоторые страницы могут повторять списки вещей (плата за номер в отеле, когда пользователь может добавить столько отелей в отель, сколько им нужно), в настоящее время я использую один и тот же список выбора, это хорошая практика или у них должен быть один?

  2. в предыдущем примере «комната» - это ascx, отрисованный либо с помощью renderpartial, либо с помощью ajax-вызова через jquery. Каков наилучший способ для контроллера передать список выбора, чтобы ascx мог использовать его, в настоящее время я добавляю данные представления для страницы, которая передает его данные представления в renderpartial, но затем при вызове ajax метод действия также должен добавить список выбора для Viewdata для ascx, не уверен, что это лучший способ.

  3. У меня есть репозиторий, который хранит эти «статические» данные и возвращает в виде общего списка, поэтому каждый раз, когда контроллеру нужны данные, он попадает в репозиторий для списка (есть несколько больше, чем просто плата, такие вещи, как названия для людей, г-н, г-жа и т. д. и другие) Я подозреваю, что какой-то кэш будет лучше, так как данные редко меняются, если вообще изменяются

Кто-нибудь есть какие-либо советы в этих областях?

15.12.2008 13:37:14
2 ОТВЕТА
РЕШЕНИЕ
  1. Если эти списки выбора полностью совпадают, то я уверен, что лучше использовать один список для нескольких DropDownLists.

  2. Похоже на его обычное использование. Я тоже использую подобный подход, но собираюсь перенести некоторые элементы управления в Html.RenderAction, потому что пропуск через ViewData страницы для управления тоже мне не подходит. Да, я знаю, что это не будет чистый MVC :)

  3. Если ваш ORM поддерживает кеш, конечно, используйте его.

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

Если вы хотите управлять кешем прозрачно, не затрагивая слой dal или mvc, я думаю, что лучший подход - это использовать AOP.

3
15.12.2008 14:14:13
ХОРОШО. Он маленький и неизменный, как мне его легко кэшировать?
Shimmy 15.11.2012 17:23:41

Один из способов сделать это - поместить данные, необходимые для списка выбора, в вашу модель через типизированное представление. Представление может перебирать данные в модели, чтобы генерировать любые нужные списки выбора. Вы также можете вставить объект непосредственно в коллекцию ViewData, но я думаю, что типизированное представление приводит к гораздо более чистому коду.

0
15.12.2008 21:07:53