程序员们,大家好!
如何使用data-value属性传递多个复选框值,以便单击删除按钮时可以使用公共ActionResult(列表项)将其传递给控制器。
CSHTML:
@foreach (var item in Model.ReportTrfPendingList)
{
<tr>
<td><input type="checkbox" data-value="@item.trfbch"/></td>
<td>@item.trfpon</td>
<td>@item.dptnam</td>
<td>@item.trfbch</td>
<td><button type="button" class="btn btn-primary deleteBtn" data-value="@item.trfbch">Delete</button></td>
<td>@CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(Convert.ToInt32(@item.trfsdt.Value.ToString().Substring(2, 2))) @item.trfsdt.Value.ToString().Substring(4, 2) , @DateTime.Now.Year.ToString().Substring(0, 2)@item.trfsdt.Value.ToString().Substring(0, 2)</td>
</tr>
}
</tbody>
脚本:
$("#SelectDeleteBtn").click(function () {
---< Processing events here > ---
});
控制器:
[HttpPost]
public ActionResult SelectedTransferNoDeletion(List<string> items, string deletionNotes) {
foreach (var transferNo in items)
{
var result = deletePendingSrv.SaveDeletionPending(transferNo, SessionUserInfo.Username, deletionNotes);
}
return Json(BaseVariable.DEFAULT_SUCCESS);
}
查看:
使用数据值属性选择多个复选框值。
答案 0 :(得分:1)
您可以使用javascript事件监听器将数据值的值添加到数组,然后只需将该数组作为参数传递给控制器。
简单的解决方案如下
@foreach (var item in Model.ReportTrfPendingList)
{
<tr>
<td><input type="checkbox" onClick="checkBoxOnClicked()" data-value="@item.trfbch"/></td>
<td>@item.trfpon</td>
<td>@item.dptnam</td>
<td>@item.trfbch</td>
<td><button type="button" class="btn btn-primary deleteBtn" data-value="@item.trfbch">Delete</button></td>
<td>@CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(Convert.ToInt32(@item.trfsdt.Value.ToString().Substring(2, 2))) @item.trfsdt.Value.ToString().Substring(4, 2) , @DateTime.Now.Year.ToString().Substring(0, 2)@item.trfsdt.Value.ToString().Substring(0, 2)</td>
</tr>
}
</tbody>
<script>
var selectedValues = []
function checkBoxOnClicked(e){
var value = e.target.getAttribute("data-value");
if(selectedValues.includes(value)) // ES6 or selectedValues.indexOf(value) >= 0 // older browser{
selectedValues.pop(value);
}
else {
selectedValues.push(value);
}
}
</script>
答案 1 :(得分:0)
您需要遍历每个选中的复选框,并根据data-value
属性生成一个数组
var items = $('input[type="checkbox"]:checked').map(function () {
return $(this).data('value');
}).get();
您没有在问题中指出deletionNotes
的值是从哪里来的,而是假设它是一个输入,然后
var deletionNotes = $(someElement).val();
然后您可以使用ajax将数据发布到您的控制器
$.ajax({
type: 'post',
url: '@Url.Action("SelectedTransferNoDeletion")', // assumes its in the same controller
contentType: 'application/json',
data: JSON.stringify({ items: items, deletionNotes: deletionNotes }),
dataType: 'json'
success: function(response) {
....
},
....
});