I have two models: Order and OrderDetails. Their models:
public class Order
{
public int Id { get; set; }
public int OrderDetailsId { get; set; }
public string UserId { get; set; }
public ApplicationUser User { get; set; }
public ICollection<OrderDetail> OrderDetails { get; set; }
}
and:
public class OrderDetail
{
public int Id { get; set; }
public int OrderId { get; set; }
public Order Order { get; set; }
public int MenuId { get; set; }
public Menu Menu { get; set; }
}
And in the Details View of Order I wanted to show related OrderDetails. Details ActionResult:
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Order order = db.Orders.Where(o => o.Id == id).Include(o => o.OrderDetails).SingleOrDefault();
//Order order = db.Orders.Where(o => o.Id == id).Include(o => o.OrderDetails).G;
if (order == null)
{
return HttpNotFound();
}
return View(order);
}
And its view:
@model RestaurantApp.Models.Order
<div>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.User.Email)
</dt>
<dd>
@Html.DisplayFor(model => model.User.Email)
</dd>
</dl>
</div>
<table class="table">
@if (Model.OrderDetails == null)
{
<tr>no items found</tr>
}
else
{
foreach (var item in Model.OrderDetails)
{
<tr>
<td>@item.MenuId</td>
<td>@item.Quantity</td>
<td>@item.Price</td>
</tr>
}
}
</table>
And the problem is that I wanted to display Menu.Name instead of MenuId. But when I use Menu.Name it shows System.NullReferenceException: Object reference not set to an instance of an object. How can I solve this problem?