C# 对列表使用编辑器模板
我有类似的东西C# 对列表使用编辑器模板,c#,asp.net-mvc,C#,Asp.net Mvc,我有类似的东西 public class ResumeVm { public ResumeVm() { EducationVms = new List<EducationVm>(); } public Guid UserId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } publ
public class ResumeVm
{
public ResumeVm()
{
EducationVms = new List<EducationVm>();
}
public Guid UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List<EducationVm> EducationVms { get; set; }
}
public class WorkExperienceVm
{
public string Title { get; set; }
}
但它不知道如何通过教育VMS
如果我这样做
@Html.EditorForModel("WorkExperienceVm", @Model.EducationVms )
由于它只希望发送1个Vm,所以它被创建
//查看工作体验虚拟机
@model ViewModels.WorkExperienceVm
@Model.Title
您正在使用的EditorForModel重载不正确。EditorForModel为当前模型生成一个编辑器模板,即ResumeVm,您传入的字符串是对象,而不是视图的名称
我假设WorkExperienceVm是视图的名称。尝试使用EditorFor:
不幸的是,这种方法无法通过使用UIHits或手动将视图名称传递到帮助器中来实现,尽管如果您不介意遵守模板的严格命名约定,这不太可能会妨碍您
我不久前写了一篇文章,解释了编辑器模板的不同助手之间的差异。它专门处理标签帮助程序,但相同的原则适用于编辑器帮助程序。能否显示WorkExperienceVm编辑器和ViewModels的代码。WorkExperienceVm是,WorkExperienceVm是编辑器模板的名称。那么,与主视图中的循环代码相比,您的代码有什么优势呢。它能正确处理ID吗?@chobo2在某些情况下,框架中有一两个关于为集合生成名称字符串的错误,但是,如果编辑器模板被键入到EducationVm的单个实例,那么这个应该可以工作。我在前面的评论中提到的场景是,当模型本身是集合时,而不是这里的情况,所以你应该没问题。仍然不清楚在“简历”视图中的EditorFor vs just foreach循环中使用此模板的优点。@chobo2此优点与任何编辑器模板相同-你可以在任何地方重用它。
@model ViewModels.WorkExperienceVm
@Model.Title
@for(int i = 0; i < Model.EducationVms.Count; i++)
{
Html.EditorFor(m => m.EducationVms[i], "WorkExperienceVm")
}
@Html.EditorFor(m => m.EducationVms)