asp.net сеанс MVC? - PullRequest
       9

asp.net сеанс MVC?

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

Я создаю интерфейс администратора для приложения управления медицинскими записями. Мой клиент попросил у меня способ легко выбрать пациента, с которым пользователь хочет работать, без необходимости выбирать пациента каждый раз, когда он хочет выполнить действие. Например, он хочет сохранить запись о текущем статусе пациента (вес, размер и т. Д.), А затем назначить того же пациента другому врачу или изменить компанию, в которой работает данный пациент ... он не хочет выбирать один и тот же пациент все три раза ... он хочет выбрать выпадающее меню для пациентов и выполнить различные действия для этого пациента.

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

Ответы [ 4 ]

2 голосов
/ 24 января 2010

Звучит так, будто вы хотите поместить что-то в сеанс - возможно, некоторую базовую информацию о "недавнем пациенте", такую ​​как идентификатор пациента, имя пациента и т. Д.

Обязательно посмотрите этот пост о том, как это сделать очень изящно.

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

Лучший способ - указать идентификатор в маршруте.

Используйте что-то подобное при регистрации маршрутов:

   routes.MapRoute(
        "Standard",                                             
        "{controller}/{action}/{PatientId}",           
        new
          {
            controller = "home", 
            action = "index", 
            PatientId = ""
          }
      );

Когда вы выбираете пациента, вы публикуете действие, которое устанавливает PatientID в RouteParameterCollection и перенаправляет на действие, отображающее форму для изменения пациента. таким образом, у вас всегда есть идентификатор пациента в URL.

Использование сессии имеет некоторые недостатки:

  • Если у вас открыто 2 окна, используйте оба тот же сеанс. Это может запутать пользователей.
  • Вы не можете добавить страницу в закладки
  • Сессия обычно хранится в памяти на сервере приложений. Это может привести к проблемы с производительностью, если широко используются.
0 голосов
/ 24 января 2010

Лично я бы рассмотрел кэширование как вариант здесь. По звуку этого вы хотите загрузить ВСЕ данные для ВСЕХ пациентов, что хорошо для небольшого количества данных, но не будет масштабироваться изящно.

Подумайте, заходите ли вы в базу данных ПЕРВЫЙ раз, когда вам нужны данные пациента, и получаете ваши данные из кэша для последующих запросов ...

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

Вы можете использовать сеанс для сохранения списка недавно активных записей пациентов для данного сеанса пользователя. Каждый раз, когда пользователь выбирает нового пациента, просто добавляйте его имя в список «Недавние». Поскольку вы можете контролировать продолжительность сеанса, вы можете просто позволить списку истечь, когда сеанс пользователя завершится. Чтобы пользователь больше не выбирал клиента, просто сделайте автоматический выбор самого последнего (последнего элемента) в списке последних клиентов.

...