【发布时间】:2019-06-18 03:21:45
【问题描述】:
我正在处理一个课堂/家庭作业项目,我正在尝试呈现一个显示订单详细信息的表单,每个产品标题显示在单独的行上。这是我的模型、控制器和视图(分别):
public class Order
{
[Key]
public int OrderId {get;set;}
[Required]
[DataType(DataType.Date)]
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime DateCreated {get;set;}
[DataType(DataType.Date)]
public DateTime? DateCompleted {get;set;}
[Required]
public string UserId {get; set;}
[Required]
public ApplicationUser User { get; set; }
public int? PaymentTypeId {get;set;}
public PaymentType PaymentType {get;set;}
public virtual ICollection<OrderProduct> OrderProducts { get; set; }
}
}
// GET: Orders/Details/5
public async Task<IActionResult> Details(int? id)
{
if (id == null)
{
return NotFound();
}
var order = await _context.Order
.Include(o => o.OrderProducts)
.ThenInclude(op => op.Product)
.Where(o => o.OrderId == id).ToListAsync();
if (order == null)
{
return NotFound();
}
return View(order);
}
<dl class="row">
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.DateCreated)
</dt>
<dd class="col-sm-10">
@Html.DisplayFor(model => model.DateCreated)
</dd>
<dt class="col-sm-2">
@Html.DisplayNameFor(model => model.OrderProducts)
</dt>
<dd class="col-sm-10">
@foreach (var product in Model.OrderProducts)
{
<div>
@Html.DisplayFor(Model => product.Product.Title)
</div>
}
</dd>
</dl>
我目前收到错误消息:
“InvalidOperationException:传递到 ViewDataDictionary 的模型项的类型为“System.Collections.Generic.List`1[Bangazon.Models.Order]”,但此 ViewDataDictionary 实例需要“Bangazon.Models”类型的模型项。订单'。”
我最初的想法是订单的 ICollection 的 OrderProducts 需要是一个列表,但这根本没有改变错误。所以,现在我很茫然。
感谢大家的考虑和耐心。我对开发还是很陌生。
【问题讨论】:
标签: c# entity-framework linq model-view-controller