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

本文关键字:icollection 实体 数据 声明 何显示 显示 | 更新日期: 2023-09-27 18:36:51

>我有一个视图,我想从另一个实体中选择数据,但这个实体被声明为 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 不被识别。

有人可以帮助我吗?

谢谢。

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

在前面的答案的帮助下,我可以按如下方式解决问题。

视图:

<% 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());

感谢您的帮助!!