2

正しい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")

その後、失敗します。テンプレート名の指定が完全に無視されるか、テンプレートの機能が損なわれるかのようです。

4

1 に答える 1