Ведущий Диалог
Зарегистрирован: 18 July 2006
Сообщения: 169
Примеры кода: 0
|
Re: Где можно хранить ViewState кроме страницы пользователя? |
18 March 2008 11:12 |
|
|
|
|
vityanyaMF_MiEK:
Вот пример для хранения в "Session":
protected override object LoadPageStateFromPersistenceMedium()
{
return Session[this.GetType().ToString()];
}
protected override void SavePageStateToPersistenceMedium(object viewState)
{
Session[this.GetType().ToString()] = viewState;
ClientScript.RegisterHiddenField("__VIEWSTATE", "");
}
В вашем варианте могут возникнуть глюки, если пользователь открыл 2 экземпляра 1 страницы в пределах одной сессии.
http://www.developer.uz - Сайт, посвященный программированию в Узбекистане
Я вот тут жаловался на странные глюки.
Причина как выяснилось была именно в хранении ВьюСтэйта в сессии.
Как их избежать?
В моём случае использовался АСП.НЕТ 2.0 и реализовано это было так:
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.Adapters;
using System.Web.UI;
public class PageStateAdapter : System.Web.UI.Adapters.PageAdapter
{
public override PageStatePersister GetStatePersister()
{
return new SessionPageStatePersister(this.Page);
}
}
и тут ещё
<?xml version="1.0" encoding="utf-8" ?>
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.Page" adapterType="PageStateAdapter" />
</controlAdapters>
<capabilities>
<capability name="requiresControlStateInSession" value="true"/>
</capabilities>
</browser>
</browsers>
|
|