我有一个带有 GridView 的应用程序,这个 GridView 在您的 PagerTemplate 中有一个 GridViewPager,它是一个 UserControl。
现在我正在尝试将此 GridViewPager 存储在 ViewState 中,但我遇到了序列化问题。Asp.Net 告诉我该类未标记为可序列化。我尝试将其标记为可序列化,如下所示:
namespace Avalon.View.UserControls.Pagers
{
[Serializable]
public partial class GridViewPager : System.Web.UI.UserControl
{
private GridView _gridView;
public event EventHandler OnTextPageChanged;
// Methods, properties...
}
}
但它不起作用
我的代码很简单,让我们看看:
// Get and set the GridViewPager to ViewState
public partial class ChamadoList : System.Web.UI.UserControl
{
// Here a Get and set my GridViewPager into ViewState
public GridViewPager gvp
{
get { return ((GridViewPager)ViewState["GridViewPager"]); }
set
{
if (value == null)
ViewState["GridViewPager"] = null;
else
ViewState["GridViewPager"] = value;
}
}
// Looping in a grid View i get the GridViewPager and put it on ViewState
protected void gvListaChamados_RowDataBound(object sender, GridViewRowEventArgs e)
{
// Here a get the pager
if (e.Row.RowType == DataControlRowType.Pager)
{
gvp = (GridViewPager)e.Row.FindControl("GridViewPager1");
}
}
//...
}
这是错误
“/”应用程序中的服务器错误。
在程序集“App_Web_epwoiz7x,版本=0.0.0.0,文化=中性,PublicKeyToken=null”中键入“ASP.view_usercontrols_pagers_gridviewpager_ascx”未标记为可序列化。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Runtime.Serialization.SerializationException:在程序集“App_Web_epwoiz7x,版本=0.0.0.0,文化=中性,PublicKeyToken=null”中键入“ASP.view_usercontrols_pagers_gridviewpager_ascx”未标记为可序列化。
源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。
堆栈跟踪:
[SerializationException:在程序集“App_Web_epwoiz7x,版本=0.0.0.0,文化=中性,PublicKeyToken=null”中键入“ASP.view_usercontrols_pagers_gridviewpager_ascx”未标记为可序列化。] System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType 类型)+7733643 System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type type, StreamingContext context) +258 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() +111 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj,ISurrogateSelector surrogateSelector,StreamingContext 上下文,SerObjectInfoInit serObjectInfoInit,IFormatterConverter 转换器,ObjectWriter objectWriter) +161 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo。序列化(对象 obj,ISurrogateSelector surrogateSelector,StreamingContext 上下文,SerObjectInfoInit serObjectInfoInit,IFormatterConverter 转换器,ObjectWriter objectWriter)+51 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(对象图,Header[] inHeaders,__BinaryWriter serWriter,布尔 fCheck) +410 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object图)+13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter 写入器,对象值)+845ObjectWriter objectWriter) +51 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +410 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream,对象图,Header[] 标头,布尔 fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) +13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer,对象值)+845ObjectWriter objectWriter) +51 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +410 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream,对象图,Header[] 标头,布尔 fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) +13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer,对象值)+845对象图,Header[] 标题,布尔 fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) +13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer, Object value ) +845对象图,Header[] 标题,布尔 fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) +13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer, Object value ) +845
[ArgumentException:错误序列化“ASP.view_usercontrols_pagers_gridviewpager_ascx”类型的值“ASP.view_usercontrols_pagers_gridviewpager_ascx”。] System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer,对象值)+3395 System.Web.UI.ObjectStateFormatter.Serialize(流输出流, 对象状态图)+110 System.Web.UI.ObjectStateFormatter.Serialize(对象状态图)+57 System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Serialize(对象状态)+4 System.Web.UI。 Util.SerializeWithAssert(IStateFormatter formatter, Object stateGraph) +37 System.Web.UI.HiddenFieldPageStatePersister.Save() +79 System.Web.UI.Page.SavePageStateToPersistenceMedium(Object state) +105 System.Web.UI.Page.SaveAllState( ) +236 System.Web.UI.Page。ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)+1099
版本信息:Microsoft .NET Framework 版本:2.0.50727.3082;ASP.NET 版本:2.0.50727.4028