私は GridView を持つアプリケーションを持っています。この GridView は、PagerTemplate に、UserControl である GridViewPager を持っています。
今、この 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、Version=0.0.0.0、Culture=neutral、PublicKeyToken=null' のタイプ 'ASP.view_usercontrols_pagers_gridviewpager_ascx' は、シリアル化可能としてマークされていません。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。
例外の詳細: System.Runtime.Serialization.SerializationException: アセンブリ 'App_Web_epwoiz7x, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' の Type 'ASP.view_usercontrols_pagers_gridviewpager_ascx' は、シリアル化可能としてマークされていません。
ソース エラー:
現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。
スタックトレース:
[SerializationException: Type 'ASP.view_usercontrols_pagers_gridviewpager_ascx' in Assembly 'App_Web_epwoiz7x, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.] System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType type) +7733643 System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type 型、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 context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter 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(ストリームのシリアル化ストリーム、オブジェクト グラフ、Header[] ヘッダー、ブール値の fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(ストリームのシリアル化ストリーム、オブジェクトグラフ) +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, Object graph, Header[] headers, Boolean 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, Object graph, Header[] headers, Boolean 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(ストリーム serializationStream、オブジェクト グラフ) +13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter ライター、オブジェクト値) +845オブジェクト グラフ、Header[] ヘッダー、ブール値 fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(ストリーム serializationStream、オブジェクト グラフ) +13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter ライター、オブジェクト値) +845
[ArgumentException: タイプ 'ASP.view_usercontrols_pagers_gridviewpager_ascx' の値 'ASP.view_usercontrols_pagers_gridviewpager_ascx' のシリアル化エラー] 、オブジェクト stateGraph) +110 System.Web.UI.ObjectStateFormatter.Serialize(オブジェクト状態グラフ) +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