我有一个复杂的对象,它有一个IEnumerable属性,我希望在我的视图中显示。
为此,我为该列表创建了一个EditorTemplate。
所以,在我看来,我有以下代码:
<div id="tabMed" class="tab-pane">
<fieldset>
<div>
@Html.EditorFor(m => m.MyList)
</div>
</fieldset>
</div>
m.List是一个IEnumerable类型,编辑器模板在一些字段内部用于显示对象。
当列表包含一个或多个对象时,这可以正常工作;它将显示并重复该列表中每个对象的模板。
现在出现问题:
让我们想要编辑包含该列表的对象,并且IEnumerable属性为null。编辑器模板根本不会出现,因此无法在该列表中创建第一个对象。
如果列表为null而没有这样的东西,是否有任何方法可以显示空模板?:
<div id="tabMed" class="tab-pane">
<fieldset>
<div>
@if (Model.MyList.Count() > 0)
{
@Html.EditorFor(m => m.MyList)
}
else
{
// empty object form template here...
}
</div>
</fieldset>
</div>
编辑:EditorTemplate看起来像这样:
@model Jazz.Models.MyList.MyObject
<div class="control-group">
@Html.LabelFor(model => Model.Name, new { @class="control-label"})
<div class="controls">
@Html.TextBoxFor(m => m.Name, new { @class="collection-item", autocomplete = "off", maxlength = 64 })
</div>
</div>
MyList是我想要显示的列表
MyObject类在MyList中声明
所以,模型会是这样的:
public class MyList
{
public MyList()
{
this.list = new List<MyObject>();
}
public int id{ get; set; }
public List<MyObject> list{ get; set; }
public class MyObject
{
public MyObject(){}
public string Name{ get; set; }
}
}
我以通用的方式放置示例,因此显示问题更为简单。