我遇到了无法调用正确的 DisplayTemplate 的问题。
我有两个模型:
CompanyName.Application.Web.Controllers.SharedViewModels.PaymentItemViewModel
CompanyName.Application.ViewModels.SharedViewModels.PaymentItemViewModel
这些对象在 IEnumerable 中使用,然后传递给 DisplayTemplate。
DisplayTemplates/PaymentItemViewModel.cshtml:
@model CompanyName.Application.ViewModels.Web.SharedViewModels.PaymentItemViewModel
显示模板/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")
然后它失败了。就好像指定模板名称要么完全被忽略,要么破坏模板功能。