我遇到了無法調用正確的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