【发布时间】:2016-04-06 18:49:22
【问题描述】:
我的视图中有一个由 sql 数据库表填充的下拉框。在下拉列表中我有不同的值,我想将按钮单击时下拉列表的选定值传递给控制器操作方法。这是下拉列表的填充方式。
public ViewResult ProductDetails(int productId)
{
Product product = repository.Products
.Include(p => p.Reviews)
.FirstOrDefault(p => p.ProductID == productId);
List<string> available = new List<string>();
available.AddRange(product.AvailableSizes.Split(',').ToList());
ViewData["AV"] = new SelectList(available);
return View(product);
}
然后在视图中:
@Html.DropDownList("AV")
我的控制器动作方法是:
public ActionResult AddToCart(Cart cart, int productId, string returnUrl, string size)
{
Product product = repository.Products
.FirstOrDefault(p => p.ProductID == productId);
if (product != null)
{
cart.AddItem(product, 1,size); //no overload for method 'AddItem' takes 3 argument, Error!
}
return RedirectToAction("Index", new { returnUrl });
}
最后是购物车类:
public void AddItem (Product product, int quantity)
{
CartLine line = lineCollection
.Where(p => p.Product.ProductID == product.ProductID)
.FirstOrDefault();
if (line == null)
{
lineCollection.Add(new CartLine { Product = product, Quantity = quantity });
}
else
{
line.Quantity += quantity;
}
}
我尝试了Error with the ajax and transaction in mvc,但没有运气,知道吗?
为里昂·威廉姆斯爵士编辑: 下面是整个购物车类,供您了解更多信息。
public class Cart
{
private List<CartLine> lineCollection = new List<CartLine>();
public void AddItem (Product product, int quantity)
{
CartLine line = lineCollection
.Where(p => p.Product.ProductID == product.ProductID)
.FirstOrDefault();
if (line == null)
{
lineCollection.Add(new CartLine { Product = product, Quantity = quantity });
}
else
{
line.Quantity += quantity;
}
}
public void RemoveLine (Product product)
{
lineCollection.RemoveAll(l => l.Product.ProductID == product.ProductID);
}
public decimal ComputeTotalValue()
{
return lineCollection.Sum(e => e.Product.ProductPrice * e.Quantity);
}
public void Clear()
{
lineCollection.Clear();
}
public IEnumerable<CartLine> Lines
{
get { return lineCollection; }
}
public class CartLine
{
public Product Product { get; set; }
public int Quantity { get; set; }
}
}
【问题讨论】:
标签: c# ajax asp.net-mvc