Ajax 和自定义视图状态提供程序
本文关键字:程序 视图状态 自定义 Ajax | 更新日期: 2023-09-27 17:57:01
>我从本文中实现了自定义视图状态提供程序
http://www.codeproject.com/Articles/8001/ViewState-Provider-an-implementation-using-Provide
这在完全回发时工作正常,但使用部分回发 (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...
}
希望这可以帮助其他人也在为同样的问题而苦苦挣扎。