我认为这是一个相对容易的问题,其中我缺少明显的东西。我正在尝试使用另一个对象的集合填充我的视图模型中的IEnumerable
对象。
public class PostIndexData
{
public IEnumerable<Post> Posts { get; set; }
public Address Address { get; set; }
public Animal Animal { get; set; }
public Species Species { get; set; }
public IEnumerable<Breed> Breeds {get;set;}
}
我正在尝试通过我的索引方法在班级AnimalID
中访问Animal
,并将其与班级AnimalID
中的Breed
进行比较。控制器:
public IActionResult Index(int? id)
{
var viewModel = new PostIndexData();
viewModel.Posts = _context.Post
.Include(i => i.Address)
.Include(i => i.Animal)
.Include(i => i.Animal.Species);
//viewModel.Breeds = _context.Breed;
if (id != null)
{
ViewBag.PostID = id.Value;
viewModel.Animal = viewModel.Posts.Where(i => i.PostID == id.Value).Single().Animal;
viewModel.Breeds = from s in _context.Breed.Where(i => i.AnimalID == viewModel.Animal.AnimalID) select s;
viewModel.Address = viewModel.Posts.Where(i => i.PostID == id.Value).Single().Address;
}
return View(viewModel);
}
此查询将返回Breed
中的所有条目,而不返回基于Animal
的具有当前AnimalID
的相应品种。有谁知道更好的方法来处理此资源或可能的资源?谢谢
public enum Gender
{
Male, Female
}
public class Animal
{
//public Animal()
//{
// this.Breeds = new HashSet<Breed>();
//}
[Required]
public string AnimalName { get; set; }
public int AnimalID { get; set; }
[Required]
public Gender Gender { get; set; }
public byte[] Image { get; set; }
public int PostID { get; set; }
public Post Post { get; set; }
public int SpeciesID { get; set; }
public Species Species { get; set; }
public ICollection<Breed> Breeds { get; set; }
}
它有ICollection
个Breed
作为导航属性(列出的许多品种可能为零)。
我的Breeds
类如下:
public class Breed
{
public int BreedID { get; set; }
public int AnimalID { get; set; }
[StringLength(50, ErrorMessage = "Breed cannot be longer than 50 characters.")]
public string BreedName { get; set; }
public Animal Animal { get; set; }
}
答案 0 :(得分:0)
实际上,这似乎在没有任何更改的情况下可以正常工作。我只是退出Visual Studio并重新打开它。重建后有些更改没有生效,这有点令人讨厌。不确定是要保留还是删除它,因为它可能没那么有用...