私はSQLデータベーステーブルで満たされた私のビューにドロップダウンボックスを持っています。ドロップダウンで私は別の値を持って、私はボタンのクリックでコントローラのアクションメソッドにドロップダウンの選択値を渡したいと思います。ドロップダウンがどのように設定されているかを示します。mvcビューからコントローラアクションメソッドにdropdownboxの選択した値を渡すにはどうすればいいですか?
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 });
}
、最終的には、カートクラスは以下の通りです:
@Html.DropDownList("AV")
私のコントローラのアクションメソッドは次のとおりです。ビューで
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);
}
、その後
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; }
}
}
リオンのおかげで、それは私の知る限りは、MVCにはかなり新しいですと、それは少し明確にすることができます?私はAVと呼ばれるプロパティを持っておらず、あなたは何を助言しますか? –
あなたの値が投稿されているかどうかを単にチェックするのが最も簡単なことは、あなたのadd to cartメソッドの中に 'AV'の値を次のようにチェックする行を追加できるということです:' var selected = Request ["AV" ]; '。デバッガを使用して、その値が正しく設定されているかどうかを確認し、必要に応じて使用することができます。あるいは、前述のアプローチを使用して、実際にAVと呼ばれるアクションにパラメータを追加することができます。MVCは独自の値のバインドを処理します。 –
サーウィリアムズは私の質問をもう一度見てもらえますか?私のアクションメソッドに渡されたパラメータ 'size'はエラーを表示し、エラーは質問に書かれています。もう一度ありがとうございます –