【发布时间】:2016-01-10 16:54:18
【问题描述】:
我在创建适当的 ViewModel 以允许用户在一个视图中一次选择多个工单时遇到问题。
我有一个 Ticket 模型
public class Ticket
{
public int TicketID { get; set; }
[Required]
[ForeignKey("Event")]
//foreign key
public int EventID { get; set; }
[Required]
public string Description { get; set; }
[Required]
public float Price { get; set; }
//navigation property
public virtual Event Event { get; set; }
}
订单模型
public class Order
{
public int OrderID { get; set; }
//foreign key
[Required]
[ForeignKey("Event")]
public int EventID { get; set; }
[Required]
public DateTime OrderDate { get; set; }
[Required]
public float OrderTotal { get; set; }
public ApplicationUser user { get; set; }
public virtual Event Event { get; set; }
}
然后我有一个 OrderDetails 模型
public class OrderDetails
{
[Required]
public int OrderDetailsID { get; set; }
[Required]
//Foreign key
[ForeignKey("Order")]
public int OrderID { get; set; }
[Required]
//Foreign key
[ForeignKey("Ticket")]
public int TicketID { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required]
[DataType(DataType.EmailAddress)]
public string email { get; set; }
[Required]
[DataType(DataType.PhoneNumber)]
public int PhoneNumber { get; set; }
//navigation properties
public virtual Order Order { get; set; }
public virtual Ticket Ticket { get; set; }
}
我还创建了一个额外的 TicketsOrdered 模型,因为我不知道还能在哪里保存用户选择的每种票证类型的数量
public class TicketsOrdered
{
public int OrderID;
public int TicketID;
public int Quantity;
}
我想创建一个视图,该视图将显示与特定活动相关的每张门票的门票描述和价格,然后还会有一个下拉/文本框允许用户输入他们需要的每张门票的数量。然后我想将 TicketID、OrderID 和数量保存到我的 TicketsOrdered 数据库表中。我遇到的问题是所有数据都与这么多模型有关,我不知道如何将它们组合在一起。我完全不知道如何实现这一点,我希望它看起来如何的一个例子是当你点击 EventBrite 上的订票时。 任何有关 ViewModel 的帮助或如何在 View 中使用我当前的模型都会非常有帮助,谢谢。
编辑 事件模型
public class Event
{
public int EventID { get; set; }
[Required]
public String Name { get; set; }
[Required]
public String Location { get; set; }
[Required]
[DataType(DataType.Date)]
public DateTime Date { get; set; }
[Required]
[DataType(DataType.MultilineText)]
public String Description { get; set; }
[Required]
[Display(Name = "Total Tickets Available")]
public int TicketsAvailable { get; set; }
//navigation property
public virtual IEnumerable<Order> Order { get; set; }
//navigation property
public virtual IEnumerable<Ticket> Tickets { get; set; }
}
【问题讨论】:
-
您声明与特定活动相关的每张门票,但您的模型建议您每个活动只有一张门票,而不是门票的集合。你的
Event型号是什么?它是否包含属性IEnumerable<Order>? -
是的,我有一个包含 IEnumerable
@StephenMuecke 的事件模型。我需要更改哪种模型以显示每个活动可以有多张门票?谢谢 -
目前还不清楚你们的关系是什么。每个
Event是否也有不同Ticket类型的集合?并且是您想要为Event创建一个Order的想法,该Event显示该Event的所有可用票类型,并允许用户为每个输入数量(假设他们想要2 张标准票和2 张豪华票票)? -
是的,这正是我想要做的@StephenMuecke
-
好的 - 现在没时间了,但我会在一小时左右添加一个答案,展示视图模型和视图应该是怎样的。另请注意,不清楚为什么
Order和OrderDetails有单独的模型,因为它们之间似乎存在 1:1 的关系
标签: c# jquery html asp.net-mvc viewmodel