首页 > 解决方案 > 如何在主从 CRUD 上查看特定 id 的记录?

问题描述

我创建了一个主详细信息 CRUD。我的观点是这样的:

@model TraficAlert.Models.ViewModels.HeaderTelegramaViewModel
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.TaBarHeader.ListaOtf)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.TaBarHeader.ListaOtf)
</dd>
(...)
            <th>
                @Html.DisplayNameFor(model => model.TaBarBody.BarTelegramaFk.NrTg)
            </th>
            <th>
                @Html.DisplayNameFor(model => model.TaBarBody.BarTelegramaFk.Continut1Tg)
            </th>
(...)
    <tbody>
        @foreach (var item in Model.taBarBody)
        {
        <tr>
            <td>
            @Html.DisplayFor(modelItem => item.BarTelegramaFk.NrTg)
        </td>
            <td>
                @Html.DisplayFor(modelItem => item.BarTelegramaFk.Continut1Tg)
            </td>
(...)

因此,在特定 ID 的 Details.cshtml 中,我可以看到 TaBarBody 的所有记录。TaBarHeader 和 TaBarBody 之间存在一对多的关系。

控制器

public IActionResult Details(int id)
        {
            HeaderTelegramaViewModel headerTelegramaViewModel = new HeaderTelegramaViewModel();
            headerTelegramaViewModel.TaBarHeader = _unitofwork.BarHeader.DetailsBarH(id);
            headerTelegramaViewModel.taBarBody = _unitofwork.BarBody.GetAllBarB();
            return View(headerTelegramaViewModel);
        }

这是 DetailsBarB() 和 DetailsBarH():

        public IEnumerable<TaBarBody> GetAllBarB()
        {
            return _db.TaBarBodies
                .Include(t => t.AnulatFk)
                .Include(t => t.ImpactFk)
                .Include(t => t.BarHeaderFk)
                .Include(t => t.BarTelegramaFk);
        }

        public TaBarHeader DetailsBarH(int? id)
        {
            return _db.TaBarHeaders
                .Include(t => t.CategoriaFk)
                .Include(t => t.CauzaFk)
(...)
                .FirstOrDefault(m => m.Id == id);
        }

所有数据都显示在详细信息视图中,但我不知道如何将我的所有记录从 TaBarBody 获取到特定 ID 的详细信息视图。

一切正常,但我从 TaBarBody 获得了所有记录。我只需要在视图中显示具有外键 = 来自 TaBarHeader 的主 ID 的 TaBarBody。一个 TaBarHeader 可以有多个 TaBarBody。

有任何想法吗?

更新:以下是请求的模型和视图模型:

    public partial class TaBarHeader
    {
        [Key]
        public int Id { get; set; }
        public int ParentId { get; set; }
        public string ListaOtf { get; set; }
        public string NomCategoriaId { get; set; }
        [ForeignKey("NomCategoriaId")]
        public TaNomCategoria CategoriaFk { get; set; }
        public string NomCauzaId { get; set; }
        [ForeignKey("NomCauzaId")]
        public TaNomCauza CauzaFk { get; set; }
        public List<TaBarBody> TaBarBodies { get; set; }
}

    public partial class TaBarBody
    {
        [Key]
        public int Id { get; set; }
        public int ParentId { get; set; }
        public string NomImpactId { get; set; }
        [ForeignKey("NomImpactId")]
        public TaNomImpact ImpactFk { get; set; }
        public string NomAnulatId { get; set; }
        [ForeignKey("NomAnulatId")]
        public TaNomAnulat AnulatFk { get; set; }
        public int BarTelegramaId { get; set; }
        [ForeignKey("BarTelegramaId")]
        public TaBarTelegrama BarTelegramaFk { get; set; }
        public int BarHeaderId { get; set; }
        [ForeignKey("BarHeaderId")]
        public TaBarHeader BarHeaderFk { get; set; }
}

public class HeaderTelegramaViewModel
{
    public TaBarHeader TaBarHeader { get; set; }
    public IEnumerable<TaBarHeader> taBarHeader { get; set; }
    public TaBarBody TaBarBody { get; set; }
    public IEnumerable<TaBarBody> taBarBody { get; set; }
}

public class BodyTelegramaViewModel
{
    public TaBarBody TaBarBody { get; set; }
    public IEnumerable<TaBarBody> taBarBody { get; set; }
    public TaBarTelegrama TaBarTelegrama { get; set; }
    public IEnumerable<TaBarTelegrama> taBarTelegrama { get; set; }
}

标签: asp.netentity-frameworklinq

解决方案


推荐阅读