我想做一个简单的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.Animals
(dbo.Workers works too)
中,一切正常:
我想做的是从另一个内部{。{1}}文件中的ASP .Net Core MVC内部生成的List<Animal> Animals
页面的Workers
和Index.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
答案 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();