c# - MVC 5 详细信息 View 不显示具有外键的字段的数据

标签 c# razor asp.net-mvc-5

<分区>

这是我第一次既编写 MVC 5 应用程序又使用 C#。我已经走了很远,并且能够解决我遇到的许多错误,但我在这个问题上遇到了困难。

我设置了一些模型和表,包括外键引用。在我的索引页面上,每条记录都使用以下 Controller 代码显示外键值:

索引 Controller

public ActionResult Index(int? filterDwg)
{
    var checkOut = db.CheckOut.Include(c => c.CheckOutStatus).Include(c => c.DwgList);
    var checkedOut = checkOut.Where(s => s.CheckStatus == (1));

    //Filtering by Drawing
    if (filterDwg != null)
    {
        checkedOut = checkedOut.Where(d => d.DrawingId == (filterDwg));
    }

    return View(checkedOut.ToList());
}

现在,我的详情页,我的controller是这样的:

细节 Controller

public ActionResult Details(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    CheckOut checkOut = db.CheckOut.Find(id);

    if (checkOut == null)
    {
        return HttpNotFound();
    }


    return View(checkOut);
}

当我拉出以下 View 时:

详情 View

@model NoDwgASP.Models.CheckOut


@{
    ViewBag.Title = "Details";
}

<h2>Details</h2>

<div>
    <h4>CheckOut</h4>
    <hr />
    <dl class="dl-horizontal">
        <dt>
            @Html.DisplayNameFor(model => model.CheckOutStatus.CheckStatusName)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.CheckOutStatus.CheckStatusName)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.DwgList.DwgNum)
        </dt>

        <dd>

            @Html.DisplayFor(model => model.DwgList.DwgNum)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.UserInitials)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.UserInitials)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.Project)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.Project)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.CheckOutDate)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.CheckOutDate)
        </dd>

        <dt>
            @Html.DisplayNameFor(model => model.ReturnDate)
        </dt>

        <dd>
            @Html.DisplayFor(model => model.ReturnDate)
        </dd>

    </dl>
</div>
<p>
    @Html.ActionLink("Edit", "Edit", new { id = Model.CheckId }) |
    @Html.ActionLink("Back to List", "Index")
</p>

DwgNum 和 CheckStatusName 字段为空白。这些字段是整数,并且是绑定(bind)到另一个数据库的外键,该数据库具有这些属性的字符串值。

我意识到我需要这样的东西

var checkOut = db.CheckOut.Include(c => c.CheckOutStatus).Include(c => c.DwgList)

但是,正如我在索引 Controller 中所做的那样,我不能简单地将 .Include 附加到

CheckOut checkOut = db.CheckOut.Find(id);

有人有什么建议吗?我很困惑,我一直没能找到任何相关的问题。

最佳答案

如上所述..

    public ActionResult Details(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    CheckOut checkOut = db.CheckOut
        .Include(c => c.CheckOutStatus)
        .Include(c => c.DwgList)
        .SingleOrDefault(x => x.CheckId == id);

    if (checkOut == null)
    {
        return HttpNotFound();
    }

    return View(checkOut);
}

关于c# - MVC 5 详细信息 View 不显示具有外键的字段的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41970894/

相关文章:

c# - 保护共享主机上的连接字符串

asp.net-mvc - 将所有 js 文件 bundle 在一个 bundle 中,与 css 文件相同

c# - 如何设置 NLog 最大文件大小?

c# - ITextSharp HTML 到 PDF 转换 CSS 图像在转换后不显示

c# - 分组输出集合中的项目

asp.net-mvc - 在 ASP.NET MVC Razor 中从数据库文本创建链接

c# - 将一个对象转换到另一个对象

c# - 在 Visual Studio 中运行宏直到文件末尾

c# - 如何将列表集合添加到列表中?

部分 View 重新加载后,jQuery keyup 事件不起作用?