0

のプロパティがありList<BaseValidator>ます。このプロパティをビューステートに保存して、ポストバックに存在させる必要があります。リストがシリアル化できないことを示すエラーが返されます。

私はグーグルで検索しました...そしてグーグルで検索しましたが、まだ機能する答えがありません。

独自のカスタム クラスも作成しましたが、BaseValidator は単純型ではないため、エラーが発生します。

誰でもアイデアはありますか?

4

3 に答える 3

0

ジェネリック型がシリアライズ可能な場合、リストはシリアライズ可能です。リスト内のジェネリック オブジェクトとサブ オブジェクトをシリアライズ可能にする必要があります。[Serializable]これらのオブジェクトにタグを追加します。

于 2013-07-31T09:04:22.720 に答える
0

配列をシリアライズできます。したがって、クラスを編集して、リストの配列プロパティを含めます。Editor browsable を never に設定して、Visual Studio に表示されないようにし、リストを非シリアル化します。

using System;
using System.ComponentModel;

[Serializable]
public class MyClass
{
    //property for usage in code. dont serialize
    [NonSerialized]
    public List<BaseValidator> MyList { get; set; }

    // Property for serialization only
    [EditorBrowsable(EditorBrowsableState.Never)]
    public BaseValidator[] MyArray
    {
        get
        {
            return MyList.ToArray();
        }
        set
        {
            MyList = new List<BaseValidator>(value);
        }
    }
}
于 2013-07-31T09:04:47.540 に答える
0

リストがシリアル化できない場合は、いつでもクラスをマークして、[Serializable]格納できるようにすることができますViewState

于 2013-07-31T09:05:04.943 に答える