【问题标题】:Can't show the name from binded/relationship model in asp.core无法在 asp.core 中显示绑定/关系模型的名称
【发布时间】:2019-01-10 08:31:23
【问题描述】:

在我上一个问题 (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”包含创建或编辑数据后的值。

希望你能帮助我;)

感谢提前!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 2015-09-16
      • 2012-04-08
      • 2016-07-26
      • 1970-01-01
      • 2018-09-23
      相关资源
      最近更新 更多