无法在asp.core中显示来自绑定/关系模型的名称

时间:2019-01-10 08:31:23

标签: razor asp.net-core foreign-keys entity-framework-core

在我上一个问题(asp.net core creating/updating a foreignkey)之后,我想显示我的Todo模型中的药房名称。实际使用以下代码:

public class Todo
    {
        public Pharmacy Pharmacy { get; set; }
    }

    public class Pharmacy
        {
            [Key]
            public int PharmacyID { get; set; }

            public string Name { get; set; }
        }

将我的选择框连接到我的创建/编辑表单中:

public class PharmacynamePageModel : PageModel
    {
        [BindProperty]
        public int SelectedPharmacy { get; set; }

        public SelectList PharmacyNameSL { get; set; }

        public void PopulatePharmacysDropDownList(ApplicationDbContext _context, object selectedPharmacy = null)
        {
            var query = (from p in _context.Pharmacy orderby p.Name select p).ToList();

            PharmacyNameSL = new SelectList(query, "PharmacyID", "Name", selectedPharmacy);
        }
    }

并进入我的列表(index.cshtml):

@foreach (var item in Model.Todo)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.OwnerID)
                </td>
                <td>
                @Html.DisplayFor(modelItem => item.Pharmacy.Name)
            </td>
       }

我尝试不成功以下变体:

  • item.Pharmacy
  • item.Pharmacy.PharmacyID(但我想打印名称)

我由SQLServer Management Studio控制,并且我的“ PharmacyID”列包含创建或编辑数据后的值。

希望你能帮助我;)

谢谢你!

1 个答案:

答案 0 :(得分:1)

Entity Framework Core允许您使用模型中的导航属性来加载相关实体。检查您是否使用Include方法来指定要包含在查询结果中的相关数据,例如以下示例

 public async Task OnGetAsync()
    {
        Todo = await _context.Todo
                              .Include(t => t.Pharmacy).ToListAsync();
    }