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