Существуют ли шаблоны проектирования ASP.NET Session? - PullRequest
0 голосов
/ 01 июля 2011

Существуют ли способы структурирования хранилища сессий в ASP?Обычно я ставлю строку в качестве ключа, но я думаю о принятии более строгих мер.

Проблема возникла из-за того, что у меня есть приложение, которое интенсивно использует сессию по двум причинам:

  1. Прикладная программа должна выполнить операции с данными перед их представлением пользователю.
  2. Прикладная программа должна проверить некоторые варианты перед записью изменений.

Моя стратегия быластроить списки и хранить их в сеансе при загрузке страницы.

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

Есть ли способы спроектировать хранилище сеансов так, чтобы сохраненные списки были уникальными для этого экземпляра страницы?Или, если это не удастся, способ спроектировать хранилище сеансов, чтобы оно всегда было уникальным для этой страницы?

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

Как правило, вы используете сеанс для данных, которые могут быть разделены между страницами и относятся к конкретному пользователю.

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

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

И, как говорит @ mikek3332002, используйте встроенные средства проверки.Опять же, редко есть причина использовать сеанс как часть проверки.

0 голосов
/ 01 июля 2011

Существует функция, называемая viewstate , которая сохраняет данные обратной передачи на странице на странице клиента.


После редактирования

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

Второй используется как (адаптировано из http://msdn.microsoft.com/en-us/magazine/cc163862.aspx)

public DataSet GetData(int ID) { ... }


<asp:ObjectDataSource ID="odsDataSource" runat="server" TypeName="DataDepend" SelectMethod="GetData">
    <SelectParameters>
        <asp:ControlParameter Name="ID" Type="int" 
        ControlID="ddlList1"
        PropertyName="SelectedValue"></asp:ControlParameter>
    </SelectParameters>
</asp:ObjectDataSource>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...