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

C# 将所选按钮值从视图传递到控制器,c#,asp.net-mvc,razor,controller,routevalues,C#,Asp.net Mvc,Razor,Controller,Routevalues,我想将所选按钮值传递给控制器。请参阅下面的代码 在我的控制器中,我正在传递ProductId,然后我将使用它在控制器中设置我的产品值 控制器: public ActionResult PlaceOrder(int ProductId, string OrderType) { // Do something } 在我的视图中,我有一个foreach循环,它将创建单选按钮,并且我还有一个hiddenfor(SelectedProductId) 视图: 您或者需要使用JavaScript在产品更

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

在我的控制器中,我正在传递ProductId,然后我将使用它在控制器中设置我的产品值

控制器:

public ActionResult PlaceOrder(int ProductId, string OrderType)
{
  // Do something
}
在我的视图中,我有一个foreach循环,它将创建单选按钮,并且我还有一个hiddenfor(SelectedProductId)

视图:


您或者需要使用JavaScript在产品更改时使用单选按钮中的数据id更新ActionLink的url


使用提交按钮而不是ActionLink,并将单选按钮上的值设置为产品id。您需要在控制器中添加一些逻辑来处理这两个不同的按钮。

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

使用真正的按钮,即
,并为它们命名。然后,您可以通过检查
请求
对象来查看单击了哪个:

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

你介意分享一下如何使用JS实现这一点吗?你的观点毫无意义。您需要在每次迭代中呈现每个产品名称和2个关联链接(这样您就可以添加
ProductId
route值),或者如果您想要每个产品的单选按钮,那么您需要2个按钮并使用javascript来处理按钮单击事件,并基于所选单选按钮构建相关的路由。
@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", })
<button name="_StandardDelivery">Order with standard delivery</button>
if (Request["_StandardDelivery"] != null) {
    // user chose standard delivery
}