繁体   English   中英

如何在razor视图中使用来自linq的空值和左外部联接来处理ViewBag

[英]How to handle ViewBag with null values from linq with left outer join in razor view

我正在使用linq连接多个表。 问题是,我必须连接一个表,该表在某些行中会有一些空值。 我认为联接本身运行良好,但是当我遍历ViewBag时,由于空值而出现错误。

这是我的代码:控制器:

ViewBag.coaching = (from kst in db.kursister
                                 join kursus_kursist in db.kursus_kursist
                                 on kst.kursist_id equals kursus_kursist.kursist_id
                                 join kursus in db.kurser
                                 on kursus_kursist.kursus_id equals kursus.kursus_id
                                 join coach in db.jobcoach
                                 on kst.kursist_id equals coach.kursist_id into coachJoin
                                 where kursus.kursus_id == id
                                 from cj in coachJoin.DefaultIfEmpty()
                                select new CoachHoldModel { kst = kst, kursus = kursus, cj = cj });

这是我的看法:

@model IEnumerable<Itucation.Models.CoachHoldModel>

@{
    ViewBag.Title = "Karriere Coach Hold";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Protokol</h2>

<div>

    <h3>
        @{
            foreach (var navn in (ViewBag.kursus))
            {
                @navn.kursus_navn
            }
        }
    </h3>
    <table class="table-bordered">
        <tr>
            <td colspan="2" style="border:0;"></td>
            <th>Status</th>
            <td><img src="~/Content/Images/logo.png" height="30" /></td>
        </tr>

        @{
            foreach (var item in (ViewBag.coaching))
            {
                <tr>
                    <td>@item.kst.fornavn</td>
                    <td>@item.kst.efternavn</td>
                    <td>
                        @item.cj.status
                    </td>

                    <td colspan="2"></td>
                </tr>
            }
        }
    </table>
</div>

@ item.cj.status将包含空值。

前叉循环遍历一系列学生。 有些学生有状态设置,有些则没有。 我想为具有状态价值的学生显示价值-忽略其他人。

任何帮助将不胜感激。

为什么不测试它是否不为null,然后显示状态?

<td>
    @if (item.cj != null) // or item.cj?.status
    {
        <span>@item.cj.status</span>
    }
</td>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM