0

ショッピングカートを表示しています。ショッピング カートの空の値を確認し、「ショッピング カートは空です」などのメッセージを表示する必要があります。

myAction で ModelState.AddModelError を使用すると、Model に null 参照があるため例外がスローされます。ErrorMessage の表示方法。
私の行動

  public ActionResult Index()
        {
            string id = Request.QueryString["UserID"];
            IList<CartModel> objshop = new List<CartModel>();
            objshop = GetCartDetails(id);
            if (objshop.Count > 0)
            {
                return View(objshop.ToList());
            }
            else
            {
                ModelState.AddModelError("", "Your Shopping Cart is empty!");
            }
            return View();
}

私の見解

    @{
         @Html.ValidationSummary(true)
     }

 <th > @Html.DisplayNameFor(model => model.ProductName) </th>
 <th > @Html.DisplayNameFor(model => model.Quantity)   </th>
 <th > @Html.DisplayNameFor(model => model.Rate)      </th>
 <th > @Html.DisplayNameFor(model => model.Price)    </th>        
 @foreach (var item in Model)
   {
<td>  @Html.DisplayFor(modelItem => item.ProductName)</td>
<td>  @Html.DisplayFor(modelItem => item.Quantity)</td>
<td>  @Html.DisplayFor(modelItem => item.Rate) </td>
<td>  @Html.DisplayFor(modelItem => item.Price) </td>
   }

助言がありますか。

4

2 に答える 2

3

問題は、カートに何も入っていないときに空のモデルを渡さないことModelStateです。ただし、これをエラーとして扱うのは意味がありません。ショッピング カートが空であることはまったく問題ありません。代わりに、ビューで空のモデルを直接処理します。

アクション

public ActionResult Index()
{
    string id = Request.QueryString["UserID"];
    IList<CartModel> objshop = new List<CartModel>();
    // assuming GetCartDetails returns an empty list & not null if there is nothing
    objshop = GetCartDetails(id);
    return View(objshop.ToList());
}

意見

@model IList<CardModel>

@if (Model.Count > 0)
{
    ...
}
else
{
    <p>Your shopping cart is empty!</p>
}
于 2012-10-29T11:05:18.123 に答える
1

アクションの最後の行を次のように変更します。

return View(new List<CartModel>());
于 2012-10-29T11:02:50.537 に答える