私の表示テンプレート「PlanAlternate」:
@model MyPlan
<div class="span4 compare-column compare-column1">
<div class="compare-row-plan">
<h3>@Model.Plan.Name</h3>
</div>
@foreach (var benefit in Model.Plan.Benefits)
{
<div class="compare-row-benefit-description">
@benefit.Description
</div>
}
<div class="compare-row-submit">
<input class="btn" type="submit" value="Apply Now" />
</div>
</div>
表示テンプレートを使用するマイ ビュー:
@model IEnumerable<MyPlan>
<div class="span9 compare-data-wrapper">
@Html.DisplayForModel("PlanAlternate")
</div>
これにより例外がスローされます。
ディクショナリに渡されたモデル アイテムのタイプは 'System.Collections.Generic.List`1[MyPlan]' ですが、このディクショナリにはタイプ 'MyPlan' のモデル アイテムが必要です。
ただし、表示テンプレートの名前を PlanAlternate.cshtml から MyPlan.cshtml に変更して使用すると、
@Html.DisplayForModel()
すべてがうまく機能します。なぜこれが起こっているのかを理解するのを手伝ってもらえますか?
ありがとう!
編集:
表示テンプレート ファイル名がビュー モデル名と一致する上記のとおりに実行しても、ビュー名 ("MyPlan") を DisplayForModel に渡すと、例外がスローされます。引数なしで DisplayForModel を呼び出すと機能します。これは私には非常に奇妙に思えます。ほとんどバグのようですが、私が理解していないだけだと確信しています。