我遇到了无法调用正确的DisplayTemplate的问题。DisplayFor无法使用具有不同命名空间的相同型号名称
我有两个型号:
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")
它抛出一个错误,它抱怨模型传入d ictionary与字典所期望的模型类型不同。在model.PaymentItems的类型是绝对的
CompanyName.Application.Web.Controllers.SharedViewModels.PaymentItemViewModel
一个IEnumerable如果我叫,像这样其他的模板不工作:
@Html.DisplayFor(model => model.PaymentItems)
然而
如果我指定的模板名称:
@Html.DisplayFor(model => model.PaymentItems, "DisplayTemplates/PaymentItemViewModel.cshtml")
然后失败。就好像指定模板名称一样被忽略,或者它破坏了模板功能。
如果我尝试调用PaymentItems.cshtml的显示模板,像这样:给你makesure您使用的IEnumerable PaymentItems – 2013-02-12 17:44:19
它是一个IEnumerable一个legitamate答案。我用ViewModels.SharedViewModels的一个是在IList中,但实际上工作。 – Tom 2013-02-12 17:47:30
比你不及格的IList – 2013-02-12 17:53:50