【发布时间】:2019-08-12 23:47:24
【问题描述】:
我最近完成了关于 udemy 的 MVC 课程,该课程构建了一个视频租赁应用程序。他介绍了如何签出电影,但我们自己去弄清楚如何重新签入。
我有一个客户模型:
public class Customer
{
public int Id { get; set; }
[Required(ErrorMessage = "Please enter customer's name.")]
[StringLength(255)]
public string Name { get; set; }
public bool IsSubscribedToNewsletter { get; set; }
[Display(Name = "Date of Birth")]
[Min18YearsIfAMember]
public DateTime? Birthdate { get; set; }
public MembershipType MembershipType { get; set; }
[Display(Name = "Membership Type")]
public byte MembershipTypeId { get; set; }
}
电影模型:
public class Movie
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
public Genre Genre { get; set; }
[Display(Name = "Genre")]
[Required]
public byte GenreId { get; set; }
[Display(Name = "Release Date")]
public DateTime ReleaseDate { get; set; }
public DateTime DateAdded { get; set; }
[Display(Name = "Number in Stock")]
[Range(1, 20)]
public byte NumberInStock { get; set; }
public byte NumberAvailable { get; set; }
}
还有一个包含客户和电影的租赁模型:
public class Rental
{
public int Id { get; set; }
[Required]
public Customer Customer { get; set; }
[Display(Name = "Customer Name")]
public int CustomerId { get; set; }
[Required]
public Movie Movie { get; set; }
public DateTime DateRented { get; set; }
public DateTime? DateReturned { get; set; }
}
我创建了一个显示有效租借的视图,并执行了删除操作,就像电影已上交一样将其删除,但我不知道如何通过增加可用电影的数量(Movies.NumberAvailable)。我尝试在与删除操作相同的操作中执行此操作,但我没有运气。这是删除操作:
public ActionResult Delete(int id)
{
Rental rental = _context.Rentals.Find(id);
//var movie = _context.Movies.Where(m => rental.Movie.Id.Contains(m.Id));
rental.Movie.NumberAvailable++;
_context.Rentals.Remove(rental);
_context.SaveChanges();
return RedirectToAction("List");
}
我试图将那部电影拉出到它自己的变量中,然后将其加 1,但 rental.Movie.Id 部分弹出一个错误,说它没有包含的定义。如果我按照上面的方式运行它,我会在rental.Movie.NumberAvailable++; 收到一个异常,说“对象引用未设置为对象的实例。”
有没有人知道我可以做些什么来解决这个问题?是的,我是菜鸟。
【问题讨论】:
标签: c# asp.net asp.net-mvc entity-framework model-view-controller