2

1つの基本クラスに2つのクラスがあるとしましょう:

public class BaseModel {

}

そして数人の子供たち:

public class FooModel : BaseModel {

}

public class BarModel : BaseModel {

}

今、私の見解では、次のようなモデルを期待したいと思います:

@model IList<BaseModel>

これらのモデルを 1 ページで編集できるようにします。

ただし、アクションでこれらのモデルのコレクションを渡すと、次のような例外が発生します。

ディクショナリに渡されたモデル項目は、'System.Collections.Generic.List 1[BarModel]', but this dictionary requires a model item of type 'System.Collections.Generic.IList1[BaseModel]' 型です。

このような:

var models = new List<BaseModel>(){ new BarModel(), new FooModel ()}
return View(models);

どうすればこれを達成できますか?

ありがとう

4

2 に答える 2

2

ページ上のモデルコレクションを変更していないと仮定すると、ページはをとるべきではありませんIList<T>。むしろそれはかかるはずIEnumerable<T>です:

@model IEnumerable<BaseModel>

それは物事の世話をする必要があります。

于 2012-10-28T21:40:50.677 に答える
0

KnownType も使用できます。

[Serilizable]
[KnownType(typeof(FooModel))]
[KnownType(typeof(BarModel))]
public class BaseModel 
{
} 

お役に立てれば。

于 2012-10-28T21:50:01.553 に答える