0

我的 EditorTemplates 文件夹中有一个自定义编辑器,用于IList<PersonRelations>. 编辑器有这个模型:

@model IList<PersonRelation>

在我的实体中是这样的:

public IList<PersonRelation> Relations { get; set; }

在我看来,这就是我所说的:

 <div class="editor-field">
      @Html.EditorFor(model => model.Relations)
 </div>

如果Relations为空,它正在渲染模型。

但是..我想以这种方式声明我的财产

    private IList<PersonRelation> _relations;
    public IList<PersonRelation> Relations
    {
        get { return _relations ?? (_relations = new List<PersonRelation>()); }
        set { _relations = value; }
    }

避免空引用异常。

问题是当 List 不为 null 且没有元素时,编辑器根本不会显示。

在我的编辑器中,我迭代了元素,但我也在循环之外渲染了另一个控件,我看不到任何元素。

我错过了什么?

4

1 回答 1

0

解决了。当我改变财产时,我忘了用它来装饰它[UIHint("PersonRelations")]

这是属性的原始形式(我的自定义编辑器的文件名是“PersonRelations.cshtml”)

这是必需的,因为引擎似乎无法推断集合的编辑器,即使您有一个集合,所以您必须明确告诉您要使用哪个。

于 2013-01-11T02:04:59.710 回答