正しいDisplayTemplateを呼び出せないという問題が発生しました。
私は2つのモデルを持っています:
CompanyName.Application.Web.Controllers.SharedViewModels.PaymentItemViewModel
CompanyName.Application.ViewModels.SharedViewModels.PaymentItemViewModel
これらのオブジェクトはIEnumerable内で使用され、DisplayTemplateに渡されます。
DisplayTemplates / PaymentItemViewModel.cshtml:
@model CompanyName.Application.ViewModels.Web.SharedViewModels.PaymentItemViewModel
DisplayTemplates / PaymentItems.cshtml:
@model CompanyName.Application.Web.Controllers.SharedViewModels.PaymentItemViewModel
このようにPaymentItems.cshtmlの表示テンプレートを呼び出そうとすると:
@Html.DisplayFor(model => model.PaymentItems, "DisplayTemplates/PaymentItem")
ディクショナリに渡されたモデルがディクショナリが期待していたものと同じモデルタイプではないと不平を言っている場合、エラーがスローされます。model.PaymentItemsのタイプは、間違いなくIEnumerableです。
CompanyName.Application.Web.Controllers.SharedViewModels.PaymentItemViewModel
他のテンプレートは、次のように呼び出すと機能します。
@Html.DisplayFor(model => model.PaymentItems)
ただし、テンプレート名を指定すると、次のようになります。
@Html.DisplayFor(model => model.PaymentItems, "DisplayTemplates/PaymentItemViewModel.cshtml")
その後、失敗します。テンプレート名の指定が完全に無視されるか、テンプレートの機能が損なわれるかのようです。