我在视图中显示两个部分视图。部分视图显示良好。 但是,如果模型值为null,则如何在我的部分视图中显示错误消息。 以下是我的代码:
控制器:
public ActionResult MyAccount(string email)
{
OrderModel objorder = new OrderModel();
var OrderDetails = objorder.GetOrderInfo(email);
if(OrderDetails == null)
{
// ViewBag.Message = "You have not placed any orders.";
ModelState.AddModelError("NoOrders", "You have not placed any orders.");
return View();
}
CustomerModel objcustomer = new CustomerModel();
var CustomerDetails = objcustomer.GetCustomerInfo(email);
return View(Tuple.Create(OrderDetails, CustomerDetails));
}
查看
@model Tuple<IList<MvcApplication1.Models.OrderModel>, IList<MvcApplication1.Models.CustomerModel>>
@Html.Partial("MyOrders")<br/>
@Html.Partial("AccountInfo")
部分视图1 @model Tuple,IList&gt;
@using (Html.BeginForm())
{
if (Model.Item1 != null) // Null reference unhandled by user code
{
<div>
@foreach(var item in Model.Item1)
{
@Html.DisplayFor(model => item.OrderID)
}
</div>
}
else
{
<p>@Html.ValidationMessage("NoOrders", new { @class = "msg" })</p>
}
}
我已经传递了null值的验证消息,以便在Partial View1中处理。 但是我没有设置对象引用和null引用未处理的消息 我的代码中有什么错误。任何建议都会有所帮助
答案 0 :(得分:3)
Model
为null
。
此:
ModelState.AddModelError("NoOrders", "You have not placed any orders.");
return View();
在视图中创建null
模型。所以这个:
if (Model.Item1 != null)
// ^^^^^^ THIS IS NULL!
..不起作用。
你需要:
if (Model != null)
虽然我必须说..你的应用程序逻辑/流程让我感到难过。在MVC中有很多种方法可以实现这一点。传递null
模型可能是最丑陋的方式之一。