0

製品ごとに作成することで、「製品の購入」ページを動的に作成しました。各製品には[バスケットに追加]ボタンがありpID、ボタンname属性を使用することで製品ごとに区別されます。nameポストバック時にコントローラー内の属性の値を取得したいと思います。これを行う方法がわからない:

意見:

@foreach (Ecommerce.Models.HomeModels.Product product in Model)
{
    using (Html.BeginForm())
    {
        @Html.Label(product.Name);
        <br />
        @Html.Label(product.Description);
        <br />
        @Html.Label(product.UnitPrice.ToString());
        <p></p>


        <input name="@product.ID" type="submit" value="Add to Basket" /> 
    }
}

コントローラ:

[HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult BuyProducts(string button)
        {

        }
4

1 に答える 1

1

フォーム内に複数の送信ボタンがない場合は、クリックされた送信ボタンの名前をサーバー側で知る必要はありません。IDをサーバーに送り返す方法は他にもあります。

データを保持して投稿するために、フォーム内に非表示のフィールドを生成してみませんか?

@foreach (Ecommerce.Models.HomeModels.Product product in Model)
{
    using (Html.BeginForm())
    {
        <input type="hidden" name="productId" value="@product.ID" />
        <input  type="submit" value="Add to Basket" /> 
    }
}

次に、コントローラーの非表示フィールドの値を取得できます。

public ActionResult BuyProducts(string productId)
{
    //..
}
于 2013-01-16T16:41:36.560 に答える