0

EditorTemplatesフォルダーにカスタムエディターがありますIList<PersonRelations>。エディタには次のモデルがあります。

@model IList<PersonRelation>

そして私の実体ではこのようになっています:

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

これは私が私の見解でそれを呼んだ方法です:

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

Relationsnullの場合、モデルをレンダリングします。

しかし..私はこのように私の財産を宣言したい

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

null参照の例外を回避するため。

リストがnullでなく、要素がない場合、エディターはまったく表示されません。

私のエディターでは、要素を繰り返し処理しますが、ループの外側に別のコントロールをレンダリングし、要素を表示できません。

私は何かが足りないのですか?

4

1 に答える 1

0

解決しました。物件を変更した時、飾るのを忘れてしまいました[UIHint("PersonRelations")]

これはプロパティの元の形式でした(私のカスタムエディターのファイル名は「PersonRelations.cshtml」です)

これが必要なのは、コレクションがある場合でも、エンジンがコレクションのエディターを推測できないため、どちらを使用するかを明示的に指定する必要があるためです。

于 2013-01-11T02:04:59.710 に答える