在我上一个问题(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>
}
我尝试不成功以下变体:
我由SQLServer Management Studio控制,并且我的“ PharmacyID”列包含创建或编辑数据后的值。
希望你能帮助我;)
谢谢你!
答案 0 :(得分:1)
Entity Framework Core允许您使用模型中的导航属性来加载相关实体。检查您是否使用Include
方法来指定要包含在查询结果中的相关数据,例如以下示例
public async Task OnGetAsync()
{
Todo = await _context.Todo
.Include(t => t.Pharmacy).ToListAsync();
}