2

System.Nullable タイプのように機能する構造体があります。

public struct SpecialProperty<T>
{
    public static implicit operator T(SpecialProperty<T> value)
    {
        return value.Value;
    }
    public static implicit operator SpecialProperty<T>(T value)
    {
        return new SpecialProperty<T> { Value = value };
    }

    T internalValue;
    public T Value { get { return internalValue; } set { internalValue = value; } }

    public override bool Equals(object other)
    {
        return Value.Equals(other);
    }
    public override int GetHashCode()
    {
        return Value.GetHashCode();
    }
    public override string ToString()
    {
        return Value.ToString();
    }

}

ASP.NET MVC バインディングで使用しようとしています。デフォルトの顧客モデル バインダーを使用すると、プロパティは常に null になります。すべてのフォーム入力名の末尾に「.Value」を追加することでこれを修正できますが、ある種のカスタム モデル バインダーを使用して直接新しい型にバインドしたいだけですが、私が試したすべてのソリューションは不必要に複雑に見えました. デフォルトのバインダーを拡張し、数行のコードで、暗黙的な変換を使用してプロパティ バインディングをモデル全体に​​リダイレクトできるはずだと思います。デフォルト バインダーのバインディング パラダイムはよくわかりませんが、モデルとモデル プロパティのこの区別に固執しているようです。これを行う最も簡単な方法は何ですか? ありがとう!

4

1 に答える 1

3

答えを見つけました。カスタム型コンバーターを実装する必要があり、デフォルトのモデル バインダーがそれを取得しました。

于 2010-04-15T20:28:46.840 に答える