0

これらのクラスがあるとします:

public class Animal
{

}

public class Elephant : Animal
{
  public string Name { get; set; }
}

そして私はコントローラーメソッドを持っています

    public SubmitElephants()
{
    var elephants = new List<Animal>();

    elephants.Add(new Elephant { Name = "Timmy" };
    elephants.Add(new Elephant { Name = "Michael" };

return View("DisplayElephants", elephants);

}

DisplayElephants ビューは次のようになります。

@model IList<Elephant>

@foreach(var elephant in Model)
{
  <div>@elephant.Name</div>
}

したがって、このコードを実行すると、エラーが発生します。

ディクショナリに渡されたモデル アイテムのタイプは 'System.Collections.Generic.List 1[Animal]', but this dictionary requires a model item of type 'System.Collections.Generic.IList1[Elephant]' です。

いいえ、リストを次のように変更したくありませんvar elephants = new List<Elephant>();

ゾウだけが含まれていることがわかっている動物のリストがあることを考えると、知りたいことはどうすればコントローラーからゾウに固有のビューに渡すことができますか?

4

2 に答える 2

0

この行を変更します。

var elephants = new List<Animal>();

に:

var elephants = new List<Elephant>();

この理由の詳細については、@Srikanth の回答を参照してください。

于 2013-04-23T01:45:56.983 に答える