编辑器模板的列表<不工作

本文关键字:工作 列表 编辑器 | 更新日期: 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和上述解决方案,那么你必须在

编辑器中指定TemplateName
Html.EditorFor(model=>model.Items , "yourtemplatename")

不需要创建packagecollection类。

谢谢。