我想压缩视图状态。因此我需要覆盖SavePageStateToPersistenceMedium
属于 Web.UI.Page 的那个。在“正常”的 ASP.Net 中,这很容易,但在我的共享点项目中,我找不到任何地方我有一个从 Web.UI.Page 继承的类
我的 PageLayouts 没有代码,masterPage 也没有。
最好的解决方案是让我能够在 pageLayout 中处理它,因为我不希望每个 Page 都缓存 ViewState。
让它更清楚一点。这是我想放在“某处”的代码:
public abstract class BasePage : System.Web.UI.Page
{
private ObjectStateFormatter _formatter =
new ObjectStateFormatter();
protected override void
SavePageStateToPersistenceMedium(object viewState)
{
MemoryStream ms = new MemoryStream();
_formatter.Serialize(ms, viewState);
byte[] viewStateArray = ms.ToArray();
ClientScript.RegisterHiddenField("__COMPRESSEDVIEWSTATE",
Convert.ToBase64String(
CompressViewState.Compress(viewStateArray)));
}
protected override object
LoadPageStateFromPersistenceMedium()
{
string vsString = Request.Form["__COMPRESSEDVIEWSTATE"];
byte[] bytes = Convert.FromBase64String(vsString);
bytes = CompressViewState.Decompress(bytes);
return _formatter.Deserialize(
Convert.ToBase64String(bytes));
}
}