如何将我的ID从按钮发送到控制器?

时间:2019-07-13 10:43:08

标签: c# model-view-controller

我在做什么错了?

我想向现有客户添加订单,但是该客户的ID不适用于控制器。

public ActionResult AddOrder(Guid? customerId)
{
    if (customerId == null)
    {
        throw new ArgumentNullException(nameof(customerId));
    }

    Customer customer = db.Customer.Find(customerId);

    return View(customer);
}
<tbody>
    <tr>
        <th>ProductCode</th>
        <th>ProductNaam</th>
        <th>Aantal</th>
        <th>Prijs</th>
        <th>Totaal</th>
    </tr>
    @{
        var totalBill = 0;
    }
    @foreach (var order in item.Order)
    {
        <tr>
            <td>@order.ProductCode</td>
            <td>@order.ProductNaam</td>
            <td>@order.Aantal</td>
            <td>@order.Prijs</td>
            <td>@order.Totaal</td>                                  
            <td>@Html.ActionLink(" ", "AddOrder", new { id = order.CustomerId }, 
                new { @class = "btn btn-success pull-right btn-sm glyphicon glyphicon-plus" })</td>
        </tr>
        totalBill = totalBill + @Convert.ToInt32(order.Totaal);
    }
</tbody>

在实时HTML中:

<a class="btn btn-success pull-right btn-sm glyphicon glyphicon-plus" 
    href="/order/AddOrder/96f33a9f-e4e9-4ab1-8b8c-1db2cbc9ce37"> </a>

我看到了GUID,但是在控制器中它仍然是00000000000000000000-GUID中的所有零而不是正确的GUID。

2 个答案:

答案 0 :(得分:0)

您并没有将参数ID与操作中的参数ID结合使用,即您设置了id,但操作期望customerId。试试:

@Html.ActionLink(
  " ", 
  "AddOrder", 
  new { customerId = order.CustomerId }, 
 ... 
})

答案 1 :(得分:0)

AddOrder中的参数是customerId,但是您正在从HTML中将order.CustomerId分配给id。尝试将ID更改为customerId,它应该可以正常工作