2016-05-11 6 views
0

私のプロジェクトでは、paypal経由で支払いを選択することができ、paypalサイトに転送されます。ユーザーが終了したら、私のサイトに戻り、直接「Choose Address」ページに移動します。この時点で私はエラーになります。ルーティングではNull Entryが発生する

パラメータ辞書は、非NULL可能タイプのパラメータ「住所」のヌルエントリを含む「可能System.Int32」メソッドは「System.Web.Mvc.ActionResult CheckoutPaypal(System.Web.Mvc.FormCollection、システム。文字列、Int32) '' T_shirt_Company_v3.Controllers.CheckoutController '。オプションのパラメータは、参照型、null可能型、またはオプションのパラメータとして宣言する必要があります。

私のwebconfigは返信先のアドレスです。ここで

<add key="return" value="http://localhost:57564/Checkout/CheckoutPayPal" /> 

public ActionResult CheckoutPaypal() 
     { 
      var cart = ShoppingCart.GetCart(this.HttpContext); 
      if (!cart.GetCartItems().Any()) 
       return RedirectToAction("Index", "Store"); 

      ViewBag.standard = cart.GetTotal(); 
      ViewBag.fclass = cart.GetTotal() + 5; 
      ViewBag.fourty = cart.GetTotal() + 10; 


      return View(); 
     } 

     /// <summary> 
     /// Gets the address and payment from the user 
     /// </summary> 
     /// <param name="values">address, payment, contact details</param> 
     /// <returns></returns> 
     [HttpPost] 
     public ActionResult CheckoutPaypal(FormCollection values, string id, int Address) 
     { 

      var order = new Order(); 
      TryUpdateModel(order); 


      var deliveryAddress = storeDB.deliveryAddresses.Where(x => x.AdressId == Address).FirstOrDefault(); 


      order.Address = deliveryAddress.Address; 
      order.City = deliveryAddress.City; 
      order.Country = deliveryAddress.Country; 
      order.PostalCode = deliveryAddress.PostalCode; 
      order.FirstName = deliveryAddress.FirstName; 
      order.LastName = deliveryAddress.LastName; 
      order.Phone = deliveryAddress.Phone; 
      order.Email = User.Identity.GetUserName(); 
      order.EmailConfirm = User.Identity.GetUserName(); 
      order.PaymentTransactionId = "Paid with paypal"; 
      //sets date and username 
      order.Username = User.Identity.Name; 
      order.OrderDate = DateTime.Now; 


      //Order gets saved 
      storeDB.Orders.Add(order); 
      storeDB.SaveChanges(); 


      //Order gets processed 
      var cart = ShoppingCart.GetCart(this.HttpContext); 
      cart.CreateOrder(order); 

      //Save again, total not saving properly until now 
      storeDB.SaveChanges(); 


      var postageno = order.PostageList.ToString(); 
      //adds the postage cost onto the total and updates the database 
      if (postageno == "FirstClass") 
      { 
       decimal addpostage = 5; 
       order.Total = order.Total + addpostage; 
       storeDB.SaveChanges(); 
      } 
      else if (postageno == "TwentyFourHour") 
      { 
       decimal addpostage = 10; 
       order.Total = order.Total + addpostage; 
       storeDB.SaveChanges(); 
      } 


      //Used to change quantity after order made and saved 
      using (TshirtStoreDB db = new TshirtStoreDB()) 
      { 
       var details = db.OrderDetails.Where(od => od.OrderId == order.OrderId); 

       foreach (var od in details) 
       { 
        Product prod = (from p in db.Products where p.ProductId == od.ProductId select p).Single(); 

        prod.Quantity -= od.Quantity; 
       } 

       db.SaveChanges(); 
      } 


      return RedirectToAction("Complete", 
         new { id = order.OrderId }); 
     } 

答えて

0

を「は、住所を選択してください」のための私のコントローラである私は、これに対抗するための最良の方法はすぐに戻ってチェックアウトにリダイレクトした後、空白のページにリダイレクトすることがわかりましたページ、これはエラーと機能をよく削除しました

関連する問題