我有ViewModel
public EmployerViewModel
{
public List<EmployerHelper> Employers { get; set; }
}
EmployerHelper
{
public long ID { get; set; }
//...
public List<WageHelper> { get; set; }
}
在ViewEmployers.cshtml
:
@Html.EditorFor(x => x.Employers)
在EditorTemplates\EmployerHelper.cshtml
我有:
<input type="hidden" asp-for="ID" />
@Html.EditorFor(x => x.Wages, "EmployerWageHelper")
然而,当我尝试运行此设置时,我得到了:
InvalidOperationException:传递给ViewDataDictionary的模型项的类型为&#39; System.Collections.Generic.List`1 [... ViewModels.Helper.WageHelper]&#39;,但此ViewDataDictionary实例需要一个模型类型的项目&#39; ... ViewModels.Helper.WageHelper&#39;。
问题是为什么第一个EditorFor
按预期工作,即一次将List<EmployerHelper>
传递给EditorTemplate
。但是,第二个EditorFor
正在将List
WageHelper
EditorTemplate
传递给EditorFor(x => Wages)
,而不是按预期传递给template
。我错过了什么?
当我执行template
(没有WageHelper
名称)时,它可以正常工作。但是,我不能使用它,因为templateName
有另一个override
用于不同的方法。我误解了EditorFor
的{{1}} Razor
是如何运作的,还是EmployerWageHelper
中的某种错误?
(现在我必须创建WageHelper
,这是article {
-webkit-column-break-inside: avoid;
page-break-inside: avoid;
break-inside: avoid;
}
的副本,以解决此问题。)