1

私は MVC3 ASP.Net アプリケーションに取り組んでいます。変数を設定する方法を理解しようとしているQuantityので、変数をコントローラーに渡すとHtml.ActionLink正しい番号になります。これがビューのコードです

@model IEnumerable<GreatVideosTrainingApplication.Models.Candy> 
@{
     ViewBag.Title = "Great Videos";
     List<GreatVideosTrainingApplication.Models.Candy> candies = new List<GreatVideosTrainingApplication.Models.Candy>();
     foreach (var candy in Model)
     {
        candies.Add(candy);
     }
     var grid = new WebGrid(candies);
     var Quantity = 0;
}
<p>Welcome To Great Videos! The best source for your favorite DVDs and Blu-Rays</p>
<img src ="/Content/Images/dvd50.jpg" />
<p></p>
<img src="/Content/Images/bluray.jpg" />
<form method="post" action="/ShoppingCart/AddToCandyCart/"+item.CandyID >

 @grid.GetHtml(@columns: grid.Columns(
                                grid.Column("Name"),
                                grid.Column("Price"),
                                grid.Column("Quantity", format: (item) =>  @Html.TextBox("Quantity", @Quantity)),
                                grid.Column("AddToCart", format: (item) => Html.ActionLink("Add To Cart", "AddToCandyCart", "ShoppingCart", new { id = item.CandyID, quantity = @Quantity }, ""))
                    )
)

 </form>

で数量の値を設定しようとしていますが、うまくいきHtml.TextBoxません。ここで覚えておいてください、私は JavaScript を知りません。MVC3 は非常に初めてです。ただし、すべてのヘルプは大歓迎です。

    public ActionResult AddToCandyCart(int id, FormCollection values)
    {
        // Add it to the shopping cart
        var quantity = values["Quantity"];
        var cart = ShoppingCart.GetCart(this.HttpContext);
        // Retrieve the video from the database
        var addedCandy = storeDB.Candies.Single(Candy => Candy.CandyID == id);
        cart.AddToCandyCart(addedCandy, int.Parse(quantity));
        // Go back to the main store page for more shopping
        return RedirectToAction("Index");
    }
4

2 に答える 2

1

さまざまなソースを混ぜ合わせることで問題を解決しました。みんなに感謝したかった。これがビューです。

@model IEnumerable<GreatVideosTrainingApplication.Models.Candy> 
@{
    ViewBag.Title = "Great Videos";
    List<GreatVideosTrainingApplication.Models.Candy> candies = new List<GreatVideosTrainingApplication.Models.Candy>();
    foreach (var candy in Model)
    {
        candies.Add(candy);
    }
    var grid = new WebGrid(candies);
    var Quantity = 0;
}

<p>Welcome To Great Videos! The best source for your favorite DVDs and Blu-Rays</p>
<img src ="/Content/Images/dvd50.jpg" />
<p></p>
<img src="/Content/Images/bluray.jpg" />
<form method="post" action="../ShoppingCart/AddToCandyCart/" >
    @using (Html.BeginForm()) { 
        @grid.GetHtml(@columns: grid.Columns(
                                        grid.Column("Name"),
                                        grid.Column("Price"),
                                        grid.Column("Quantity", format: @<text><input name="Quantity" type="text" value="@Quantity"</text>),
                                        grid.Column("AddToCart", format: @<text><input type="submit" value="Add To Cart" name="submit" /></text>)
                            )
    )
}
</form>

アクションコントローラーはこちら

 [HttpPost]
 public ActionResult AddToCandyCart(FormCollection values)
 {
        int id = 1;
        string[] quantities = values["Quantity"].Split(','); 
        foreach (var item in quantities)
        {
            try
            {
                int quantity = int.Parse(item);
                if (quantity >= 1)
                {
                    // Add the candy to the shopping cart
                    var addedCandy = storeDB.Candies.Single(Candy => Candy.CandyID == id);
                    var cart = ShoppingCart.GetCart(this.HttpContext);
                    cart.AddToCandyCart(addedCandy, int.Parse(item));
                }
            }
            catch (Exception e)
            {
                return View("Failed");
            }

            id++;
        }
        // Go back to the main store page for more shopping
        return RedirectToAction("Index");
 }
于 2012-07-05T19:05:39.897 に答える
1

テキストボックスを含めると、次のコードが機能しました。HTMLヘルパーに問題があったので、入力ボックスのコードを直接書きました。これが役立つことを願っています。

grid.Column("Quantity", format: @<text><input name="Quantity" type="text" value="@item.Quantity"</text>))
于 2012-07-03T19:51:49.367 に答える