«Глобальное» состояние и ASP.NET MVC - PullRequest
1 голос
/ 10 марта 2010

Я играю с изучением ASP.NET MVC как разработчик, не являющийся веб-разработчиком. Я пытаюсь найти лучшую идиому для приложения, которое имеет концепцию выбора «проекта» для работы на первой странице, которая затрагивает все остальные страницы.

Кажется, есть три варианта:

  • Просто поместите информацию в состояние сеанса. Работает нормально, но не очень MVC-иш
  • Встраивать состояние во все URL-адреса ... поэтому вместо / Products / Details / 1 все URL-адреса / (project_id) / Products / Details / 1
  • Установка отдельного куки для этой информации

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

Любые предложения о лучшем подходе - является ли использование сессии такой плохой идеей?!

Ответы [ 2 ]

2 голосов
/ 10 марта 2010

Вариант 2 из твоего - мой выбор.
Так что вместо / Продукты / 1 / Детали
Я бы сделал это Project / 1 / Products / 1 / Details

Это больше соответствует REST. Это практически не имеет отношения к MVC, но если вы хотите, чтобы ваши маршруты и URL-адреса читались как ресурсы в REST, вам нужно, чтобы URL-адрес свернулся в слэше и имел состояние. Другими способами является пометка идентификатора проекта в cookie, но это убивает ссылки, так что когда кто-то уходит и возвращается, он попадает туда.

Сессия также затрудняет проверку того, связываете ли вы себя непосредственно с этой концепцией.

1 голос
/ 10 марта 2010

Лично я бы просто использовал сеанс. На самом деле в сеансе нет ничего, кроме MVCish - думайте, что это просто часть вашей модели.

Использование файла cookie в действительности ничем не отличается от использования сеанса. Впрочем, встраивание его в URL-адреса - неплохой вариант, особенно для «связности», если это касается вашего проекта. Но у него есть побочный эффект - загромождают URL-адреса и требуют, чтобы вы постоянно передавали этот идентификатор со страницы на страницу.

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