Asp.net mvc 5 MVC 5获取表行中DropDownList的值

Asp.net mvc 5 MVC 5获取表行中DropDownList的值,asp.net-mvc-5,Asp.net Mvc 5,我有一个可以添加到购物车的产品表视图。每行都有一个DropDownList,其中包含允许订购的数量,还可以通过一个按钮添加到购物车中。一切都在正确填充和显示。我知道如何在ActionLink中传递项目ID,但如何获取与单击的ActionLink的表行关联的DownDownList的值 我猜可能是使用JQuery在单击ActionLink时触发的 我还想把每一行都做成一个表格,但这似乎有些过头了 有没有一种简单的MVC方法可以做到这一点?为一个合适的问题准备更多信息,然后继续解决它。感谢Steph

我有一个可以添加到购物车的产品表视图。每行都有一个DropDownList,其中包含允许订购的数量,还可以通过一个按钮添加到购物车中。一切都在正确填充和显示。我知道如何在ActionLink中传递项目ID,但如何获取与单击的ActionLink的表行关联的DownDownList的值

我猜可能是使用JQuery在单击ActionLink时触发的

我还想把每一行都做成一个表格,但这似乎有些过头了


有没有一种简单的MVC方法可以做到这一点?

为一个合适的问题准备更多信息,然后继续解决它。感谢Stephen提供的提示和信息

我试着在详细信息部分的每个标记周围放置一个Html.BeginForm。这确实对我有用。我能够很容易地获得每一行的独特表单信息。然而,当我启用jquerydatatables时,提交将中断。DataTables必须以某种方式捕获提交或单击。我还没弄明白这一点,但它让我尝试了JQuery,这似乎是一种更好的方法

以下是我如何构造表数据行:

@foreach (var item in Model)
{
    <tr>
        <td>
            <img src="@item.GetFrontImage()" width="100" />
        </td>
        <td>
            <strong>@Html.DisplayFor(modelItem => item.DisplayName)</strong>
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.CustomerSKU)
        </td>
        <td>
            @Html.DropDownList("OrderQty", item.GetAllowedOrderQuantities(), htmlAttributes: new { @class = "form-control" })
        </td>
        <td>
            <a class="btn btn-default pull-right" data-id="@item.ID">Add to Cart</a>
        </td>
    </tr>
}
JQuery函数接收对正在单击的链接的引用,以便我可以从数据ID属性中提取项目ID。然后,我可以通过使用.parent.parent获取对同一行中下拉选择的引用。parent将我带到标记,然后仅查找下一个“select”标记。对你们很多人来说可能很明显

这对我来说非常有用。我还可以用帖子返回的数据更新其他元素

多谢各位

Karl

对于html格式的表格:

ُُُEmpId 名称 缺席状态 @模型中的每个var项 { @项目Id @项目名称 @Html.DropDownListDDL\u缺席状态,新建SelectListViewBag.statusList,Id,名称,新建{@class=表单控制文本中心} }
你需要为你的一个表格行显示html,不要使用动作链接——你需要的是一篇文章,而不是一篇GET!
// Add to Cart click
$('table .btn').click(function () {
    // Gather data for post
    var dataAddToCard = {
        ID: $(this).data('id'),     // Get data-id attribute (Item ID)
        Quantity: $(this).parent().parent().find('select').val()    // Get selected value of dropdown in same row as button that was clicked
    }

    // POST data to controller
    $.ajax({
        url: '@Url.Action("AddToCart","Shopping")',
        type: 'POST',
        data: JSON.stringify(dataAddToCard),
        contentType: 'application/json',
        success: function (data) { $('#Result').html(data.ID + ' ' + data.Quantity); }
    })
});