当model.item为null时显示错误消息

时间:2013-07-23 12:02:13

标签: c# asp.net-mvc asp.net-mvc-4

我在视图中显示两个部分视图。部分视图显示良好。 但是,如果模型值为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引用未处理的消息 我的代码中有什么错误。任何建议都会有所帮助

1 个答案:

答案 0 :(得分:3)

Modelnull

此:

ModelState.AddModelError("NoOrders", "You have not placed any orders.");
return View();

在视图中创建null模型。所以这个:

if (Model.Item1 != null)
// ^^^^^^ THIS IS NULL!

..不起作用。

你需要:

if (Model != null)

虽然我必须说..你的应用程序逻辑/流程让我感到难过。在MVC中有很多种方法可以实现这一点。传递null模型可能是最丑陋的方式之一。