выберите использование списка в asp.net mvc - PullRequest
8 голосов
/ 15 декабря 2008

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

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

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

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

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

Ответы [ 2 ]

3 голосов
/ 15 декабря 2008
  1. Если эти списки выбора полностью совпадают, то я уверен, что лучше использовать один список для нескольких DropDownLists.

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

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

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

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

0 голосов
/ 16 декабря 2008

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

...