新表和关联已被添加为icollection不可mable,我如何迭代结果?

时间:2013-07-30 11:30:06

标签: asp.net-mvc entity-framework razor

我向我的实体添加了一个新表并创建了一个关联。我的新代码如下。

正如你可以看到所有以前添加的表只是进入get / set这个表作为icollection进入并且在我的剃刀视图中我不能再执行以下操作了。如何将结果输入此视图?

由于

Razor不再有效     @ Html.DisplayFor(modelItem => item.NetInfo.Username)

错误

 'System.Collections.Generic.ICollection<ITAPP.Models.tblNetworkInfo>' does not contain a definition for 'Username' and no extension method 'Username' accepting a first argument of type 'System.Collections.Generic.ICollection<ITAPP.Models.tblNetworkInfo>' could be found (are you missing a using directive or an assembly reference?)

类     公共部分类tblEquipment     {         public tblEquipment()         {             this.NetInfo = new HashSet();         }

    public int ID { get; set; }
    public Nullable<int> UserID { get; set; }
    public Nullable<int> PreviousUserID { get; set; }
    public Nullable<int> ChangeID { get; set; }
    public Nullable<int> RequestedBy { get; set; }
    public string MachineName { get; set; }
    public bool Stock { get; set; }
    public string Vendor { get; set; }
    public string Model { get; set; }
    public string Supplier { get; set; }


    public virtual tblUser User { get; set; }
    public virtual tblChangeLog ChangeLog { get; set; }
    public virtual tblAssetType AssetType { get; set; }
    public virtual ICollection<tblNetworkInfo> NetInfo { get; set; }

1 个答案:

答案 0 :(得分:1)

由于NetInfo是一个集合,你必须遍历它:

这是一个选择:

@foreach(var netInfo in Model.NetInfo)
{
    @Html.DisplayFor(m => netInfo.Username)
}

另一种选择是:

@Html.DisplayFor(m => m.NetInfo)

然后,如果您为tblNetworkInfo模型创建显示模板,您可以在其中显示您需要的任何内容:

tblNetworkInfo.cshtml
----
@model tblNetworkInfo

@Html.DisplayFor(m => m.Username)

DisplayFor非常智能,可以处理集合并为集合中的每个项目输出显示模板。