2

大きな入力フォームの場合、モデルへの魔法のデータバインディングに asp.net FormView を使用します。このモデルでは、Rides というプロパティ (以下を参照) を使用してリストを公開していますが、明らかに完全に置き換えたくありません。だから私はそれを読み取り専用にしました。

ただし、この方法ではデータバインディング機能を使用できなくなります。この問題の一般的な解決策はありますか?

public IList<Ride> Rides
{
    get
    {
        if (this._rides == null)
        {
            this._rides = new List<Ride>();
        }

        return this._rides;
    }
}
4

3 に答える 3

1

<%# Bind("PropertyName")%> use <%# Eval("PropertyName")%> の代わりにデータバインディングを引き続き使用できます.Bindは通常双方向バインディング用であり、Evalは通常、基礎となるものの評価用です.データソース、バインドもセッターがある場合に便利です。これが十分な光を放ち、役立つことを願っています。

于 2010-03-10T05:44:17.113 に答える
0

暗闇の中でのワイルドな突き刺し、これが機能するかどうかはわかりませんが、試してみることができると思います...

セッター (セット) をプロパティに戻して、自分自身に割り当てさせるのはどうですか?

例えば。

set
{
    this._rides = this._rides;  // Rather than this._rides = value;
}

これは、値がプロパティから変更できないことを意味します。設定操作が試行されても、損傷はなく、バインドする必要があります...

于 2010-03-10T18:30:21.547 に答える
0

Monty、BindingList という名前のクラスを見てください。バインディング リストは、双方向バインディングを有効にします。コードで Yor コレクションから作成し、FormView の datasource プロパティに入札できます。これがあなたの望むものだと思います。また、IList を公開しても、これを読み取り専用にすることはできません。私はリストに再キャストすることができ、あなたのアイテムをずっと変更することができます。乗り物を読み取り専用として公開したい場合は、IEnumerable を返し、ReadOnlyCollection でリストを返さないでください... リストを他のクラスに再キャストしても役に立ちません。

于 2010-03-15T08:20:46.733 に答える