这就是我所做的
- 在 Corelibrary 下创建了一个新文件夹。
- 将其命名为“适配器”</li>
- 在“适配器”下,创建了一个新的类文件。
- 将类文件命名为“PageStateAdapter.cs”</li>
- 从“PageStateAdapter.cs”中的 PageAdapter 类扩展</li>
- 为 GetStatePersister() 添加一个覆盖,如下所示。
代码:
using System.Web.UI;
using System.Web.UI.Adapters;
namespace eRecruitCore.Adapters
{
public class PageStateAdapter : PageAdapter
{
public override PageStatePersister GetStatePersister()
{
return new SessionPageStatePersister(this.Page);
}
}
}
- 在 Web->App-Browsers 下创建了一个浏览器文件
在浏览器中添加了以下内容。将文件命名为“Default.browser”</p>
<browsers> <browser refID="Default"> <controlAdapters> <adapter controlType="System.Web.UI.Page" adapterType="Corelibrary.Adapters.PageStateAdapter" /> </controlAdapters> <capabilities> <capability name="requiresControlStateInSession" value="true" /> </capabilities> </browser> </browsers>
确保 adapterType 属性与为页面状态适配器创建的类命名空间相匹配。
出于某种奇怪的原因,这段代码仅在 Chrome 中不起作用。当我说不起作用时,我的意思是,页面加载正常,但视图状态是一团糟。但是在 IE 和 Firefox 中,视图状态很小,页面加载速度更快。
我做的下一件事是在不同的用户代理下加载 Fiddler 中的页面,如果用户代理是 chrome,那么会出现同样混乱的视图状态。
我已经多次检查代码,我写了一个示例站点来测试。这在 Chrome 上运行良好。我真的不知道在哪里看。对此的任何帮助表示赞赏。