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