Ajax 和自定义视图状态提供程序

本文关键字:程序 视图状态 自定义 Ajax | 更新日期: 2023-09-27 17:57:01

>我从本文中实现了自定义视图状态提供程序

http://www.codeproject.com/Articles/8001/ViewState-Provider-an-implementation-using-Provide

这在完全回发时工作正常,但使用部分回发 (Ajax) 它不起作用,有人可以为此提供解决方案,或者指导我哪里出了问题,我不知道。

Ajax 和自定义视图状态提供程序

终于我解决了这个烂摊子,感谢阿里斯托斯给了我关于这个问题的线索。

以下是我在 SqlViewStateProvider 中更改此方法所做的工作.cs

public override void SavePageState(System.Web.UI.Control pControl, object viewState)
{
  string vsKey = String.Empty;
  //    Searching for the hidden field named "__vsKey"
  // Comment out this line 
  //System.Web.UI.HtmlControls.HtmlInputHidden ctrl = System.Web.UI.HtmlControls.HtmlInputHidden)pControl.FindControl("__vsKey");
 // Add this line
  string lastKey = ((Page)pControl).Request.Form["__vsKey"];
  if (lastKey == null)
  {
     // Generate new GUID
     vsKey = Guid.NewGuid().ToString();
     // Store in the hidden field
     // Remove this line its old school code
     //((Page)pControl).RegisterHiddenField("__vsKey", vsKey);
     // Add this new one
     ((Page)pControl).ClientScript.RegisterHiddenField("__vsKey", vsKey);
   }
   else
   {
     // Use the GUID stored in the hidden field
     // Comment this one out
     //vsKey = ctrl.Value;
     // Add these two lines
     vsKey = lastKey;
     ((Page)pControl).ClientScript.RegisterHiddenField("__vsKey", lastKey);
   }
// Every thing else is just as-is...
}

希望这可以帮助其他人也在为同样的问题而苦苦挣扎。