У меня есть приложение с 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");
}
}
//...
}
А вот и ошибка
Ошибка сервера в приложении '/'.
Тип «ASP.view_usercontrols_pagers_gridviewpager_ascx» в сборке «App_Web_epwoiz7x, версия = 0.0.0.0, Culture = нейтральный, PublicKeyToken = null» не помечен как сериализуемый.
Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.Runtime.Serialization.SerializationException: введите «ASP.view_usercontrols_pagers_gridviewpager_ascx» в сборке «App_Web_epwoiz7x, версия = 0.0.0.0, культура = нейтральная, PublicKeyToken = null» не помечена как сериализуемая.
Ошибка источника:
Во время выполнения текущего веб-запроса было сгенерировано необработанное исключение. Информация о происхождении и местонахождении исключения может быть идентифицирована с помощью приведенной ниже трассировки стека исключений.
Трассировка стека:
[Исключение SerializationException: введите «ASP.view_usercontrols_pagers_gridviewpager_ascx» в сборке «App_Web_epwoiz7x, версия = 0.0.0.0, культура = нейтральная, PublicKeyToken = null» не помечена как сериализуемая.]
System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers (тип RuntimeType) +7733643
System.Runtime.Serialization.FormatterServices.GetSerializableMembers (Тип типа, контекст StreamingContext) +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.Serialize (Object obj, ISurrogateSelector surrogateSelector, контекст StreamingContext, SerObjectInfoInit serObjectInfoInit, преобразователь IFormatterConverter, ObjectWriter objectWriter) +51
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize (Граф объектов, заголовок [] inHeaders, __BinaryWriter serWriter, логический fCheck) +410
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize (поток serializationStream, граф объектов, заголовки [], логический fCheck) +134
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize (поток, сериализация, поток, граф объектов) +13
System.Web.UI.ObjectStateFormatter.SerializeValue (модуль записи SerializerBinaryWriter, значение объекта) + 845
[ArgumentException: Ошибка сериализации значения «ASP.view_usercontrols_pagers_gridviewpager_ascx» типа «ASP.view_usercontrols_pagers_gridviewpager_ascx.»]
System.Web.UI.ObjectStateFormatter.SerializeValue (модуль записи SerializerBinaryWriter, значение объекта) +3395
System.Web.UI.ObjectStateFormatter.Serialize (Stream outputStream, Object stateGraph) +110
System.Web.UI.ObjectStateFormatter.Serialize (Object stateGraph) +57
System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Serialize (состояние объекта) +4
System.Web.UI.Util.SerializeWithAssert (форматер IStateFormatter, объект StateGraph) +37
System.Web.UI.HiddenFieldPageStatePersister.Save () +79
System.Web.UI.Page.SavePageStateToPersistenceMedium (состояние объекта) +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