首页 > 解决方案 > 与其使用 single() 返回表中的一项,如何返回与列表中相同 ID 绑定的多个项?

问题描述

我正在创建一个联系人管理数据库作为一个项目,并使用剃须刀页面创建了联系人和活动表。在个人联系人的页面上,我想返回与其 ID 相关的所有活动的列表,而不仅仅是单个活动。这是我的设置方式:

public Contact Contact { get; set; }
public List<Activity> Activity { get; set; }

public async Task<IActionResult> OnGetAsync(int? id)
{
    if (id == null)
    {
        return NotFound();
    }

    Contact = await _context.Contact
        .Include(c => c.Location)
        .Include(c => c.Role)
        .Include(c => c.State).FirstOrDefaultAsync(m => m.ContactID == id);

    Activity = await _context.Activity
        .Include(c => c.ActivityTask)
        .Where(m => m.ContactID == id)
        .ToListAsync();

    if (Contact == null)
    {
        return NotFound();
    }
    return Page();
}

然后我调用每个项目显示如下:

<dt class="col-sm-2">
    @Html.DisplayNameFor(model => model.Activity.Single().Status)
</dt>
<dd class="col-sm-10">
    @Html.DisplayFor(model => model.Activity.Single().Status)
</dd>

显然 single 会抛出异常,但我不确定用什么替换它。我想可能是 Where() 或 FindAll() 但在我当前的设置中都不起作用。

标签: c#entity-frameworkasp.net-coresequencerazor-pages

解决方案


您必须在打开剃刀代码以呈现活动列表之间进行选择:

@foreach (var item in Activity)
{
    <...
}

.FirstOrDefault()仅使用和渲染第一个。

问候。


推荐阅读