我目前有一个这样的视图:
@using (Html.BeginForm("Compare", "Carousel", FormMethod.Post))
{
@foreach (var product in Model.Products)
{
<tr>
<td>@product.Provider.Name</td>
<td>£@Math.Round(product.MonthlyPremium, 2, MidpointRounding.AwayFromZero)</td>
<td>@Html.ActionLink("More Details", "MoreDetails", new { id = product.ProductId })</td>
<td><button name="compare" value="@product.ProductId">Compare</button</td>
</tr>
}
}
控制器:
[HttpPost]
public ActionResult Compare(ProductsWithDetailModel model) // This is a guess, Model may not persist?
{
// Code here
return View("Index", model);
}
我真正想要的是,当单击一个按钮时,将调用Controller,并将已选择的产品(单击的按钮)添加到项目列表中。
我实际上如何找出在Controller中单击了哪个按钮?我怎么会找不到网上以前做过的任何教程,肯定是它的基本功能?还是我处理错误?
最佳答案
ASP.NET MVC接受所有输入并将其通过动词发送给操作。这些控件的绑定由View上的name
属性完成,其值取决于我们在说什么控件(文本,复选框,单选,选择,按钮等)。您可以在ProductsWithDetailModel
上拥有一个名为compare的属性,它将接收您单击的按钮的值。