如何显示声明为icollection的实体的数据

时间:2015-01-08 18:04:43

标签: c# asp.net-mvc entity-framework

我有一个观点,我想从另一个实体中选择数据,但是这个实体被声明为Icollection。

EF生成的模型:

 namespace SINCO_MVC.Models
{
using System;
using System.Collections.Generic;

public partial class SINCO_CONCESSAO
{
    public SINCO_CONCESSAO()
    {
     this.SINCO_LEI_AUTORIZATIVA = new HashSet<SINCO_LEI_AUTORIZATIVA>();
     }

    public virtual ICollection<SINCO_LEI_AUTORIZATIVA> SINCO_LEI_AUTORIZATIVA { get; set; }
}
}

我的索引:

   [Authorize(Roles = "ADMINISTRADOR")]
    public ActionResult IndexConcessaoLeiAut()
    {
          return View("IndexConcessaoLeiAut", db.SINCO_CONCESSAO.Include(s => s.SINCO_LEI_AUTORIZATIVA).ToList());
    }

sinco_lei_autorizativa模型:

 namespace SINCO_MVC.Models
 {
     [MetadataType(typeof(SincoLeiAutorizativaMetaData))]
     public partial class SINCO_LEI_AUTORIZATIVA
     {
     }

public class SincoLeiAutorizativaMetaData 
{
    [Display(Name="ID: ")]
    public int IDLEIAUTORIZATIVA { get; set; }

   }
 }

我的观点:

 <% foreach (var item in Model) { %>
    <tr>
    <td>
        <%: Html.DisplayFor(modelItem => item.IDCONCESSAO) %>
    </td>
    <td>
        <%: Html.DisplayFor(modelItem => item.SINCO_LEI_AUTORIZATIVA.? ) %>

       </td>
  </tr>
 <% } %>
 </table>

我想选择作为SINCO_LEI_AUTORIZATIVA项目的IDLEIAUTORIZATIVA。当实体未被声明为Icollection时,我只需在DisplayFor中调用IDLEIAUTORIZATIVA。但这不起作用,IDLEIAUTORIZATIVA无法识别。

任何人都可以帮助我吗?

感谢。

1 个答案:

答案 0 :(得分:0)

借助之前的答案,我可以解决以下问题。

查看:

<% foreach (var item in Model) { %>
<tr>
    <td>
        <%: Html.DisplayFor(modelItem => item.IDCONCESSAO) %>
    </td>
    <td>
        <% foreach (var subitem in item.SINCO_LEI_AUTORIZATIVA)
           { %>

           <%: Html.DisplayFor(sla => subitem.IDLEIAUTORIZATIVA) %>
        <% } %>
    </td>
   <td>
   </td>
</tr>

控制器:

    var idLei = db.SINCO_LEI_AUTORIZATIVA.Select(t => t.IDLEIAUTORIZATIVA).ToList();

    var result = db.SINCO_CONCESSAO.Include(s => s.SINCO_LEI_AUTORIZATIVA).Where(s => s.SINCO_LEI_AUTORIZATIVA.Any(v => idLei.Contains(v.IDLEIAUTORIZATIVA))).ToList();

    return View(result.ToList());

感谢您的帮助!!