派生オブジェクトのリストのためのMVC2 Modelbinder
-
19-09-2019 - |
質問
私はAsp.net MVC 2でデフォルトModelbinderでの作業(派生)異なるオブジェクトタイプの一覧が欲しいます。
私は、次のViewModelを持っています:
public class ItemFormModel
{
[Required(ErrorMessage = "Required Field")]
public string Name { get; set; }
public string Description { get; set; }
[ScaffoldColumn(true)]
//public List<Core.Object> Objects { get; set; }
public ArrayList Objects { get; set; }
}
そしてリストはdiffent派生型のオブジェクトが含まれ、例えばます。
public class TextObject : Core.Object
{
public string Text { get; set; }
}
public class BoolObject : Core.Object
{
public bool Value { get; set; }
}
私がリストまたはArrayListの実装を使用した場合、すべてがのきれい足場の形での取得問題ではありませんが、バックのActionResultに投稿するときにmodelbinderは私のための派生オブジェクト型のプロパティを解決しません。
何を扱うさまざまなオブジェクト・タイプのリストを取得するにはViewModelに構造のために良い解決策になるだろうか?すべてのオブジェクトタイプ(例えばリスト、リストなど)のための余分なリストを持つことは、これはのviewmodelを構築し、バックドメインモデルにマッピングの両方のオーバーヘッドがたくさんあることから、私にとっては良い解決策ではないようです。
カスタムモデルバインダーですべてのプロパティを結合する他のアプローチについて考え、どのように私は多くのオーバーヘッドなしに注釈が(必要な属性などを検証し)、ここでのアプローチのデータを使用することができますか?
解決
あなたの質問に戻って取得し、派生型がModelBinderで解決する方法を、あなたは、WCF KnownTypeAttributeと同様のメカニズムで属性を持つ派生型のバリエーションを登録することができたり、起動時に登録を行うことができます。いずれにせよ、これらの変動は、一度登録して、パフォーマンスを考慮して上に保持されます。
モデルバインダーは、データ注釈/検証属性に干渉しないように、この問題を解決します。あなたが他のシナリオでそれらを期待どおり彼らは動作します。