Получение названия кнопки при обратной передаче

Я динамически создал страницу "Купить продукты", создав ее для каждого продукта. Каждый продукт имеет кнопку "Добавить в корзину", которая отличается для каждого продукта наличием 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)
        {

        }

1 ответ

Решение

Если у вас нет нескольких кнопок отправки внутри формы, вам не нужно знать на стороне сервера, как называлось нажатой кнопку отправки. Существуют и другие способы отправки вашего идентификатора на сервер:

Почему бы вам просто не создать скрытое поле внутри формы для хранения и публикации данных?

@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)
{
    //..
}
Другие вопросы по тегам