Error con el ajax y la transacción en mvc

Tengo el ajax es:

 $( document ).ready(function(){ $('#addtocart').click(function () { var size = $('#ddlsize').val(); var color = $('#ddlcolor').val(); var id ='@Model.ProductId'; alert(size + color +id); $.ajax({ url: '@Url.Action("AddTocart", "ShoppingCart")', data: { id: id, size: size, color: color, }, dataType: "html", type: 'POST', success: function (data) { alert("Da them vao gio hang"); }, error: function () { alert("Co loi xay ra vui long thu lai"); } }); }); });  

Y en mi mando

 [HttpPost] public ActionResult AddTocart(int id, string size, string color) { Product productitem = dbcon.Products.Where(p => p.ProductId == id).SingleOrDefault(); var cart = ShoppingCart.Getcart(this.HttpContext); cart.AddtoCart(productitem, size, color); return View(); } 

sin el complemento de httpget. Cuando hago clic en el botón addtocart, algún error de tiempo en ajax, pero se realiza la acción addtocart y se guarda en la base de datos, algún tiempo de éxito y algún error de tiempo pero no se guarda la base de datos, ¿no sé qué problema ha ocurrido?

Debido a esta syntax

 url: '@Url.Action("AddTocart", "ShoppingCart")' 

La opción de url de la llamada ajax sería /ShoppingCart/AddTocart , y como se llama a return View(); en su código de controlador

 [HttpPost] public ActionResult AddTocart(int id, string size, string color) { Product productitem = dbcon.Products.Where(p => p.ProductId == id).SingleOrDefault(); var cart = ShoppingCart.Getcart(this.HttpContext); cart.AddtoCart(productitem, size, color); return View(); } 

Le está diciendo al controlador que abra este url después de insertarlo en la base de datos: /ShoppingCart/AddTocart , que supongo que no existe para que obtenga el error porque no tiene /Views/ShoppingCart/AddTocart.cshtml o no No tenga este método sin el atributo [HttpPost] en la clase ShoppingCartController .

 public ActionResult AddTocart() { } 

Debes devolver json como sigue

 [HttpPost] public ActionResult AddTocart(int id, string size, string color) { Product productitem = dbcon.Products.Where(p => p.ProductId == id).SingleOrDefault(); var cart = ShoppingCart.Getcart(this.HttpContext); cart.AddtoCart(productitem, size, color); return Json(new { success = true }); } 

y cambiar la opción dataType a json