Benim sql veritabanı tablosu tarafından doldurulur benim görünümünde açılan kutusu var. aşağı açılırken farklı değerlerim var, düğmenin tıklatıldığında seçilen değerinin denetleyici eylemi yöntemine geçmek istiyorum. burada aşağı açılan nüfus açılır.Bir mvc görünümünden denetleyici eylem yöntemine açılan açılır kutudaki değer nasıl iletilir?
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 });
}
ve nihayet sepeti sınıfı aşağıdaki gibidir::
@Html.DropDownList("AV")
benim denetleyicisi eylem yöntemidir: görünümünde
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);
}
ve sonra
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;
}
}
denedim Error with the ajax and transaction in mvc ama yoktu şans, herhangi bir fikir?
Sir Rion Williams için düzenleme: Daha fazla bilgi için tüm cart sınıfı aşağıdadır. senin Görünüm aşağıdaki elemanı içeriyorsa
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; }
}
}
Rion sayesinde, ama net kadarıyla ben mvc oldukça yeni olduğum gibi bunu biraz yapmak mümkündür ? AV adlı bir mülküm yok ve ne bir parametre tavsiye edersiniz? –
Değerinizi gönderip göndermediyseniz basitçe "kontrol et" seçeneği, "AV" değerini kontrol etmek için sepete ekle yöntemine bir satır ekleyebileceğinizdir: var seçili = İstek ["AV" ]; '. Bu değerin düzgün bir şekilde doldurulup doldurulmadığını görmek için hata ayıklayıcısını kullanabilir ve sonra gerektiği gibi kullanabilirsiniz. Alternatif olarak, daha önce bahsettiğim yaklaşımı, aslında “AV” adlı eylemde bir parametre ekleyerek ve MVC'nin değeri kendi başına bağlamayı ele alacağını kullanabilirsiniz. –
Sir Williams, soruyu bir kez daha gözden geçirebilirseniz, 'geçit' parametresinden geçirmiş olduğum parametre bir hatayı gösterir ve hatada bir soru yazılır. tekrar teşekkürler –