2016-09-16 77 views
1

當我提交表單並且數據庫中的表當前爲空時,我在Model.Any()行上獲取「system.argumentnullexception」。代碼如下。system.argumentnullexception在Model.Any()上不能爲null null()

@using System.Linq 
@model IEnumerable<Al_sehrawi.Models.tbl_Packing> 
@{ 
ViewBag.Title = "AddBox2"; 
Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>AddBox2</h2> 

@{ 

if (Model.Any()) 
{ 
    foreach (var i in Model) 
    { 
    <form action="~/Packing/AddBox2" method="post"> 
     <table> 
      <tr> 
       <td> 
        Id: 
        @{int counter = i.packing_id + 1;} 
        <input name="id" type="number" value="@counter" /> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        Name : 
       </td> 
       <td> 
        <input name="packingName" type="text" /> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        Unit : 
       </td> 
       <td> 
        <input name="unit" type="text" /> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        Quantity of 1st Packing : 
       </td> 
       <td> 
        <input name="quantity1" type="number" /> 
       </td> 
      </tr> 
      <tr> 
      <tr> 
       <td> 
        Quantity of 2nd Packing : 
       </td> 
       <td> 
        <input name="quantity2" type="number" /> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <input name="Submit1" type="submit" value="submit" /> 
       </td> 
      </tr> 
     </table> 

    </form> 
          } 
         } 
         else 
         { 
          <form action="~/Packing/AddBox2" method="post"> 
           <table> 
            <tr> 
             <td> 
              Id: 

              <input name="id" type="number" value="1" /> 
             </td> 
            </tr> 
            <tr> 
             <td> 
              Name : 
             </td> 
             <td> 
              <input name="packingName" type="text" /> 
             </td> 
            </tr> 
            <tr> 
             <td> 
              Unit : 
             </td> 
             <td> 
              <input name="unit" type="text" /> 
             </td> 
            </tr> 
            <tr> 
             <td> 
              Quantity of 1st Packing : 
             </td> 
             <td> 
              <input name="quantity1" type="number" /> 
             </td> 
            </tr> 
            <tr> 
            <tr> 
             <td> 
              Quantity of 2nd Packing : 
             </td> 
             <td> 
              <input name="quantity2" type="number" /> 
             </td> 
            </tr> 
            <tr> 
             <td> 
              <input id="Submit1" type="submit" value="submit" /> 
             </td> 
            </tr> 
           </table> 

          </form> 
               } 
      } 

PackingController中的代碼如下。

public ActionResult AddBox2() 
    { 
     PackingModel c = new PackingModel(); 
     var id = c.getNextId(); 
     return View(id); 
    } 
    [HttpPost] 
    public ActionResult AddBox2(int id, string packingName, string unit, int quantity1, int quantity2) 
    { 
     PackingModel p = new PackingModel(); 
     p.addBox2(id, packingName, unit, quantity1, quantity2); 
     return View(); 
    } 

和模型

public bool addBox2(int id, string packingName, string unit,int quantity1, int quantity2) 
    { 
     try 
     { 
      using (POSEntities1 db = new POSEntities1()) 
      { 


       tbl_Packing p = new tbl_Packing(); 
       tbl_packing_box2a b1 = new tbl_packing_box2a(); 
       tbl_packing_box2b b2 = new tbl_packing_box2b(); 

       p.name = packingName; 
       p.unit = unit; 

       b1.quantiity = quantity1; 
       b1.tbl_packing_box_id = id; 

       int a_Id; 

        var result = db.tbl_packing_box2a.OrderByDescending(b => b.tbl_packing_box1a_id).Take(1).ToList(); 
       foreach (var item in result) 
       { 
        a_Id = item.tbl_packing_box1a_id; 

        b2.quantity = quantity2; 
        b2.tbl_packing_box2a_id = a_Id; 

        db.tbl_Packing.Add(p); 
        db.tbl_packing_box2a.Add(b1); 
        db.tbl_packing_box2b.Add(b2); 
        db.SaveChanges(); 
       } 
      } 
     } 
     catch (Exception) 
     { 

      return false; 
     } 
     return true; 
    } 
+1

在你的控制你只是發送'Id'到視圖。你必須發送你的整個模型。 – DCruz22

回答

0

首先檢查是否模型是空的,然後嘗試Model.Any()

@if (Model != null) 
{ 
    if (Model.Any()) 
    { 
    .... 
    } 
} 
相關問題