带有TemplateName

时间:2016-12-09 01:51:40

标签: c# asp.net-core-mvc editorfor

我有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; } 的副本,以解决此问题。)

0 个答案:

没有答案