2

DefaultModelBinder から継承し、XElement 型のプロパティを手動でバインドする独自のカスタム ModelBinder を作成中です。

次のように、「BindProperty」メソッドをオーバーライドする必要があるようです。

    protected override void BindProperty(
        ControllerContext controllerContext, 
        ModelBindingContext bindingContext, 
        System.ComponentModel.PropertyDescriptor propertyDescriptor)
    {
        if (propertyDescriptor.PropertyType == typeof(XElement))
        {
            // code here to take the POST-ed form value and put it in the property as an XElement instance
        }
        else
            base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
    }

どのコードを使用する必要がありますか:

A) 投稿されたフォームの値からプロパティの値を取得しますか?

B) この値をプロパティに挿入しますか?

DefaultModelBinder クラスで Reflector を実行して動作を確認しようとしましたが、コードが非常にわかりにくいものでした。

以前にこれを行った人が必要です。

4

1 に答える 1

3

bindingContextパラメーターには、要求からの値が既に設定されている ValueProvider プロパティが含まれています。アイデアは、そこから値を引き出すということです。

これは単に値の辞書であるため、バインドするフィールドの名前を使用してインデックスを作成できます。

何が起こっているのかを理解する最も簡単な方法は、カスタム ModelBinder を適用し、コードにブレークポイントを設定して、デバッガーで取得したデータを調べることです。

于 2009-10-07T03:36:23.253 に答える