/ /モデル内部プロパティのカスタムモデルバインダー-asp.net-mvc

モデル内部プロパティのカスタムモデルバインダー - asp.net-mvc

私のモデルはこんな感じ

public class MyModel
{
string ID {get;set;}
string Title {get;set;}
MyOtherModel Meta {get;set;}
}

タイプ(MyOtherModel)のカスタムモデルバインダーを定義して、デフォルトバインダーがMyModelをバインドするときに、「メタ」プロパティのカスタムモデルバインダーを呼び出す方法。 私はアプリのスタートでそれを登録しました:

 ModelBinders.Binders[typeof(MyOtherModel)] = new MyCustomBinder();

しかし、これは機能しません。モデルバインダーに関するより多くの情報を持つアイデアや良い記事はありますか?

回答:

回答№1は1

複雑な型のマッピングに少し触れるコレクションに関する記事があります。

コレクションと複雑な型についての少し

一方、この記事ではいくつかの役立つヒントを提供できます。

http://odetocode.com/Blogs/scott/archive/2009/04/27/6-tips-for-asp-net-mvc-model-binding.aspx

としてお勧めします 回避策 MyModelクラスにモデルバインダーを使用することは、完璧なソリューションではありませんが、 リファクタリング より良い解決策を見つければ簡単にできます。 :)


回答№2の場合は0

実際、MyModelクラスのModelで編集/作成ビューを挿入する場合、次のようになります。

<%= Html.TextBox("Meta.Prop1") %>

Prop1はMyOtherModelクラスのプロパティです。 それから

UpdateModel(model);

カスタムサブモデルプロパティにテキストボックスの値を入力します。また、テキストボックスの値にもそのサブモデルの値が入力されます。

したがって、現在のモデルを更新すると、サブモデルも更新されます。