0

ビューに 2 つの部分ビューを表示しています。部分的なビューがうまく表示されます。しかし、モデルの値が 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 タプル、IList>

 @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>
        }
    }

部分ビュー 1 で処理する null 値の検証メッセージを渡しました。しかし、オブジェクト参照が設定されておらず、null 参照が未処理のメッセージを取得しています。
私のコードの間違いは何ですか? どんな提案も役に立ちます

4

1 に答える 1

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モデルを渡すことは、おそらく醜い方法の 1 つです。

于 2013-07-23T12:05:15.530 に答える