将所选按钮值从视图传递到控制器

时间:2015-03-18 13:57:39

标签: c# asp.net-mvc razor controller routevalues

我想将所选按钮值传递给控制器​​。请参阅下面的代码。

在我的控制器中,我正在通过ProductId,然后我将用它在我的控制器中设置我的产品价值。

控制器:

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

在我的视图中,我有一个foreach循环,它将创建像按钮一样的无线电,我也有一个hiddenfor(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中传递Product Id,然后将其传递给控制器​​,但我不确定如何实现这一点

按钮点击:

@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 个答案:

答案 0 :(得分:0)

您需要使用JavaScript在产品更改时使用单选按钮中的data-id更新ActionLink的URL。

或者

使用提交按钮代替ActionLinks,并将单选按钮上的值设置为产品ID。您需要在控制器中放置一些逻辑来处理两个不同的按钮。

答案 1 :(得分:0)

那些不是按钮。他们是链接,不参与表单提交。

使用真实按钮,即<button></button>并为其命名。然后,您可以通过检查Request对象来查看单击的内容:

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

然后在你的行动中:

if (Request["_StandardDelivery"] != null) {
    // user chose standard delivery
}