在ASP .Net Core MVC 2.1中的模型中获取对List <t>的访问权限

时间:2018-12-07 14:41:27

标签: c# asp.net razor entity-framework-core

我想做一个简单的ASP .Net Core MVC APP。

我有两个模型:

public class Farming
{
    [Key]
    public int    Id                 { get; set; }
    public string Localization       { get; set; }
    public List<Animal> Animals      { get; set; } //i want to get into it 
    public List<Worker> Workers      { get; set; } //from cshtml file
}

public class Animal 
{
    [Key]
    public int      Id                  { get; set; }
    public Species  Species             { get; set; }
    public DateTime BirthDate           { get; set; } 
    public bool     Sex                 { get; set; } 
    public DateTime ImpregnationDate    { get; set; } 
}

public class Worker 
{
    [Key]
    public int      Id                  { get; set; }
    public string   FirstName           { get; set; }
    public string   LastName            { get; set; } 
    public string   Position            { get; set; } 
    public float    Salary              { get; set; } 
    public DateTime EmploymentDate      { get; set; } 
    public DateTime EndOfEmploymentDate { get; set; } 
}

我正在设置数据库,它可以正常工作。在SQL Object Explorer的dbo.Animalsdbo.Workers works too)中,一切正常:

enter image description here

我想做的是从另一个内部{。{1}}文件中的ASP .Net Core MVC内部生成的List<Animal> Animals页面的WorkersIndex.cshtml页面的列表中获取访问权限。控制器也是由脚手架产生的。

我的List.cshtml(我简短一点)

Index.cshtml

@model IEnumerable<Farm.Models.Farming> @{ ViewData["Title"] = "Index"; } //foreach loop here with "item" <a asp-action="List" asp-route-id="@item.Id">@Html.DisplayFor(modelItem => item.Localization)</a> List.cshtml的方法

FarmingController.cs

那么,如何从public async Task<IActionResult> List(int? id) { if (id == null) { return NotFound(); } var farming = await _context.Farms.FirstOrDefaultAsync(m => m.Id == id); if (farming == null) { return NotFound(); } return View(farming); } 中导入的Models.Farming.Animal进入Models.Farming.Worker@SolutinName.Models.Farmin的访问权限?

EDIT1:

我试图通过这种方式获得对Animal的访问权限:

List.cshtml

但是我从Visual那里得到了信息,var animal = await _context.Animals.FirstOrDefaultAsync(a => a.FarmingId == id); //i get `id` poperty from func `<IActionResult>` that i mentioned higher in this question 没有定义Animal(是的,请看FarmingId模型),但是它存在于Animal中。我是Core的新手,有什么想法吗?

EDIT2:

我将数据库编辑为这种形式,现在效果更好:

dbo.Animals

1 个答案:

答案 0 :(得分:1)

一切似乎都还可以,但是请尝试明确地包括动物

 Farm theFarm = _context.Farms.Include(f => f.Animals).Where(f => f.Id == farmId);

农场的对象将包含农场的所有字段以及带有动物的列表。 farmId是要获取的服务器场的ID。

使用它来饲养所有带有动物的农场:

var theFarms = _context.Farms.Include(f => f.Animals).ToList();