说我有这样的观点:
@model Models.CustomerModel
@{
ViewBag.Title = "Details";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Details</h2>
<div>
@*<h4>ApplicationModel</h4>*@
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.FirstName)
</dt>
<dd>
@Html.DisplayFor(model => model.FirstName)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Surname)
</dt>
<dd>
@Html.DisplayFor(model => model.Surname)
</dd>
</dl>
</div>
假设CustomerModel也有一组订单。 Order类看起来像这样:
public class Order {
public int OrderID {get; set; }
public datetime OrderDate {get; set; }
如何将所有喜欢的订单放在同一个视图上?我试过这个(根据上面的代码):
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.OrderID)
</th>
<th>
@Html.DisplayNameFor(model => model.OrderDate)
</th>
</tr>
@foreach (var item in model.Orders)
{
<tr>
<td>
@Html.DisplayFor(item => item.OrderID)
</td>
<td>
@Html.DisplayFor(item => item.Description)
</td>
</tr>
}
我得到的错误是:
参数字典包含参数的空条目 用于方法的非可空类型'System.Int32'的'orderid' 'System.Web.Mvc.ActionResult删除(Int32)'。
如果我删除第二个代码片段(对于每个循环),那么它可以正常工作。如何添加第二个代码片段?
答案 0 :(得分:0)
尝试添加空检查
@if(Model.Orders != null)
{
foreach (var item in Model.Orders)
{
<tr>
<td>
@Html.DisplayFor(t => item.OrderID)
</td>
<td>
@Html.DisplayFor(t => item.Description)
</td>
</tr>
}
}
或使用LINQ,你可以
if(Model.Orders.Any())
如果它没有帮助,请查看this question
答案 1 :(得分:0)
您可以在CustomerModel
中创建OrderId Nullablepublic int? OrderID {get; set; }
或者检查来自数据库的OrderId的Null值(如果OrderId不应该为Null,那么它的数据不好,应该从数据库本身开始限制)