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

Я хотел бы передать выбранное значение кнопки контроллеру. Смотрите мой код ниже.

В моем контроллере я прохожу через ProductId, который затем буду использовать для установки значения моего продукта внутри моего контроллера.

контроллер:

public ActionResult PlaceOrder(int ProductId, string OrderType)
{
  // Do something
}

В моем представлении у меня есть цикл foreach, который будет создавать радио-подобные кнопки, и у меня также есть скрытый элемент (SelectedProductId)

Посмотреть:

<div class="panel panel-primary">
  <div class="panel-heading">Panel Name</div>
  <div class="panel-body">
    <div class="row">
      <div class="form-group">
        @Html.HiddenFor(m => m.SelectedProductId)
        @if (Model.Products != null && Model.Products.Count > 0)
        {
          <div class="btn-group" data-toggle="buttons">
          @foreach (var product in Model.Products)
          {
            <label class="btn btn-default productButton">        
              <div class="labelProduct">@Product.Name</div>
              <input type="radio" name="ProductGMX" id="@("product" + @product.Id)" autocomplete="off" checked data-id="@product.Id">
            </label>
          }
        </div>

Я хочу передать идентификатор продукта в ActionLink, который затем передаст его контроллеру, но я не уверен, как этого можно достичь

Нажатие кнопки:

@Html.ActionLink("Order with standard delivery", "PlaceOrder", "Standard", new { ProductId = ?,  OrderType = "Standard delivery" }, new { area = "Standard" })
@Html.ActionLink("Order with Next day Delivery", "PlaceOrder", "Elevated", new { ProductId = ?, OrderType = "NextDay" }, new { area = "Elevated", })

2 ответа

Решение

Вам также нужно использовать JavaScript для обновления URL-адреса ActionLink при каждом изменении продукта, используя идентификатор данных из переключателя.

Или же

Используйте кнопки отправки вместо ActionLinks и установите значение переключателя на идентификатор продукта. Вы должны будете поместить некоторую логику в свой контроллер, чтобы обращаться с двумя различными кнопками.

Это не кнопки. Это ссылки, которые не участвуют в отправке формы.

Используйте реальные кнопки, т.е. <button></button> и дать им имя. Затем вы можете увидеть, какие были нажаты, проверив Request объект:

<button name="_StandardDelivery">Order with standard delivery</button>

Тогда в ваших действиях:

if (Request["_StandardDelivery"] != null) {
    // user chose standard delivery
}
Другие вопросы по тегам