我正在努力尝试将getElementsByClassName
生成的集合发送到VB.Net,MVC5中的控制器。此特定页面用于编辑用户的项目,并且每个项目类型使用相同的页面。此外,所有项目类型的所有字段都存储在一个表中,我相信使用默认模型绑定器而不是一个选项。所有字段都有唯一的标识号,在视图中用作id
。
我用来收集各个字段的脚本:
function submitEdit(editRow) {
alert('edit function');
var edits = document.getElementsByClassName('edit');
alert('get complete');
var i;
for (i = 0; i < edits.length; i++) {
alert('in loop');
alert(edits[i].checked);
}
我玩过不同的提醒,我正在收集我需要的价值。
这是我试图将集合传递给的函数:
Function EditConfirmation(edits As Collection) As ActionResult
我尝试将此集合作为url参数发送。我也尝试通过像这样的ajax传递它:
$.ajax({
url: '/ViewDetails/EditConfirmation',
type: 'POST',
data: { 'edits': edits },
success: function (result) {
alert("success");
}
.error(function (xhr, status) {
alert(status);
})
});
有没有办法将这个集合传递给我的控制器,还是有其他方法可以忽略这个?
答案 0 :(得分:1)
.error(function
你的代码应该是这样的:
$.ajax({
url: '/ViewDetails/EditConfirmation',
type: 'POST',
data: { 'edits': edits },
success: function (result) {
alert("success");
},
error: function (status) {
alert(status);
})
});
document.getElementsByClassName
为您提供了一系列DOM元素,并且您无法将这些元素直接传递给您的服务器。您需要将它们更改为可以发送到服务器的数据(如字符串/数字/布尔/简单对象/数组。我不确定您要发送的内容,但以下是您可以使用的示例:
var edits = document.getElementsByClassName('edit');
var dataToSend = {};
for (i = 0; i < edits.length; i++) {
dataToSend[edits[i]['name']] = edits[i].checked;
}
// Now you can use the object dataToSend (which is a simple object) as the data to send to the server
$.ajax({
...
...
data: { 'edits': dataToSend },
...
...
});