1

我目前有这样的视图:

@using (Html.BeginForm("Compare", "Carousel", FormMethod.Post)) 
{
@foreach (var product in Model.Products)
{
        <tr>
             <td>@product.Provider.Name</td>
             <td>&pound;@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);
 }

我真正想要的是,当单击按钮时,将调用控制器并将已选择的产品(单击的按钮)添加到项目列表中。

我如何真正找出在控制器中单击了哪个按钮?为什么我在网上找不到任何以前做过的教程,肯定是它的基本功能?还是我接近它错了?

4

3 回答 3

2

ASP.NET MVC 接受所有输入并通过动词将其发送到操作。这些控件的绑定是由name您的视图上的属性进行的,其值取决于我们所讨论的控件(文本、复选框、单选、选择、按钮等)。您可以在ProductsWithDetailModel调用的比较上拥有一个属性,它会接收您单击的按钮的值。

于 2012-11-23T19:59:08.457 回答
2

每个项目有 1 个表格怎么样?

例如

@foreach (var product in Model.Products)
{
    <tr>
         <td>@product.Provider.Name</td>
         <td>&pound;@Math.Round(product.MonthlyPremium, 2, MidpointRounding.AwayFromZero)</td>
         <td>@Html.ActionLink("More Details", "MoreDetails", new { id = product.ProductId })</td>
         <td>
             @using (Html.BeginForm("Compare", "Carousel", FormMethod.Post)) 
             {
                 <input type="hidden" name="productId" value="@product.ProductId"  />
                 <button name="compare">Compare</button>
             }
         </td>
    </tr>
}
于 2012-11-23T20:04:41.913 回答
0

使用点击。在循环中设置 js 隐藏值。在控制器检查中。

于 2012-11-23T20:01:58.113 回答