我在电子商务Mvc应用程序中使用了Mvc Music Store购物车。 "加入购物车"在我的" Cart"中添加Size属性之前,函数没问题。表
我的产品表中有3种产品:
我在下拉列表中显示了这些尺寸,因此用户可以选择尺寸,然后添加到购物车。
问题:当我从下拉列表中选择尺寸并点击"添加到购物车"按钮,它不会在" Cart"中存储大小。数据库中的表。
查看
@model FypStore.Models.Product
@Html.DropDownListFor(m => m.Size, new SelectList(Model.Size.Split(new char[] { ',' })))
<span>PKR @Html.DisplayFor(model => model.Price)</span>
<br />
<br />
<button type="button" class="btn btn-fefault cart">
<i class="fa fa-shopping-cart"></i>
@Html.ActionLink("Add to cart", "AddToCart", "ShoppingCart", new { id = Model.ProductId }, "")
</button>
控制器我已经使用了MVc音乐商店示例中的完整购物车控制器,所以这里只有部分控制器。
我已添加此行字符串大小=&#34;小&#34 ;; ,它工作正常,它存储&#34;小&#34;在Cart表的Size属性中。但是我希望从Dropdownlist中选择这个值。
public ActionResult AddToCart(int id)
{
// Retrieve the album from the database
var addedAlbum = storeDB.Products.Single(prod => prod.ProductId == id);
string size = "Small";
// Add it to the shopping cart
var cart = ShoppingCart.GetCart(this.HttpContext);
cart.AddToCart(addedAlbum, size);
// Go back to the main store page for more shopping
return RedirectToAction("Index");
}
ShoppingCart.cs
public void AddToCart(Product product, string size)
{
// Get the matching cart and album instances
var cartItem = storeDB.Carts.SingleOrDefault(
c => c.CartId == ShoppingCartId
&& c.ProductId == product.ProductId);
if (cartItem == null)
{
// Create a new cart item if no cart item exists
cartItem = new Cart
{
ProductId = product.ProductId,
CartId = ShoppingCartId,
Count = 1,
Size = size
};
storeDB.Carts.Add(cartItem);
}
else
{
// If the item does exist in the cart, then add one to the quantity
cartItem.Count++;
}
// Save changes
storeDB.SaveChanges();
}
答案 0 :(得分:1)
您需要将下拉列表值传递给Action方法,然后您可以保存它们。
@Html.ActionLink("Add to cart", "AddToCart", "ShoppingCart", new { id = Model.ProductId }, new {id = Model.ProductId })
@Html.DropDownListFor(m => m.Size, new SelectList(Model.Size.Split(new char[] { ',' },new { @onchange="SetSize(this.value,'@Model.ProductId')" })))
<script>
function SetSize(size,id)
{
$(""+id).attr("href", "/ShoppingCart/AddToCart"+"?id="+id+"&size="+size);
}
</script>
public ActionResult AddToCart(int id,string size)
{
// Retrieve the album from the database
var addedAlbum = storeDB.Products.Single(prod => prod.ProductId == id);
string size = size;
// Add it to the shopping cart
var cart = ShoppingCart.GetCart(this.HttpContext);
cart.AddToCart(addedAlbum, size);
// Go back to the main store page for more shopping
return RedirectToAction("Index");
}