编辑器模板的列表<不工作
本文关键字:工作 列表 编辑器 | 更新日期: 2023-09-27 18:18:55
我正在尝试为List<Package>
创建一个编辑器模板。我完全限定了Editortemplate视图中的类型,如下所示:
@model List<JYP.Business.ViewModels.Package>
当我尝试在我的Editortemplate视图中引用模型时,我得到一个空引用,这使我相信模型没有正确关联。我不得不在我的ViewModel中使用UIHint
,以便让它使用编辑器模板。我的ViewModel包含一个List<Package> Packages
,这是我想让我的自定义编辑模板拿起。我做错了什么?
你可以依赖约定:
public class MyViewModel
{
public List<Package> Packages { get; set; }
}
,然后在主视图中:
@model MyViewModel
@Html.EditorFor(x => x.Packages)
,然后你可以定义一个编辑器模板,它将自动为Packages集合的每个元素呈现:
@model JYP.Business.ViewModels.Package
...
按照约定,这个编辑器模板应该放在~/Views/SomeController/EditorTemplates/Package.cshtml
或~/Views/Shared/EditorTemplates/Package.cshtml
中。这是ASP。. NET MVC会按照这个顺序查找。
根据您的要求,我理解您不想使用UIHint或任何其他方式来说明使用哪个模板。
这可能对你有用。
public class PackageCollection : List<JYP.Business.ViewModels.Package>
{
}
现在在主模型中使用
public class ModelTest{
public PackageCollection Items { get; set;}
public ModelTest(){
Items = new PackageCollection();
}
}
现在创建名为PackageCollection的EditorTemplate。或PackageCollection。
另一个解决方案
现在,如果你不想使用UIHint和上述解决方案,那么你必须在
编辑器中指定TemplateNameHtml.EditorFor(model=>model.Items , "yourtemplatename")
不需要创建packagecollection类。
谢谢。