我有这个Ajax帖子致力于单个值,但是我需要它用于多个值。我想念什么?
我已经尝试将公共类“值”设置为列表和Guid []。我试图将方法参数调整为List AND Value []。不知道还有什么尝试。
Class:
public class Value
{
public Guid TimeId { get; set; }
}
Method:
public IActionResult ApproveAllTimesheets([FromBody]Value information)
View JS:
function SubAll() {
var selectedValues = $('#timesheet').DataTable().column(0).checkboxes.selected().toArray();
var instructions = {};
for (var TimeId in selectedValues) {
instructions[TimeId] = { TimeId: selectedValues[TimeId] };
}
var inst = JSON.stringify(instructions);
$.ajax({
url: "/Admin/ApproveAllTimesheets",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: inst,
success: function (result) {
alert(result);
},
error: function (xhr, textStatus) {
if (xhr.status == 401) { alert("Session Expired!"); window.location = "/Account"; }
else {
alert('Content load failed!', "info");
}
}
});
};
如果我通过该对象发送它可以工作,但是我需要像我的ajax帖子一样通过多个值发送。
var指令= {TimeId:“ 13246578-1234-7894-4562-456789123456”};
更新#1 我通过扩展类找到了一种对我有用的结构,现在我只需要弄清楚如何创建正确的对象和数组组合即可。
New Classes:
public class ValueContainer
{
public List<Value> MasterIds { get; set; }
}
public class Value
{
public Guid TimeId { get; set; }
}
Method:
public IActionResult ApproveAllTimesheets([FromBody]ValueContainer information)
Structure I need now (this works hard coded):
var jsonObject = {
"MasterIds": [{ TimeId: "13246578-1234-7894-4562-456789123450" }, { TimeId: "13246578-1234-7894-4562-456789123451" }, { TimeId: "13246578-1234-7894-4562-456789123452" }]
};
我还是这个新手,但是我看到的是jsonObject是一个具有键“ MasterIds”的对象,而对应的值是一个具有键“ TimeId”的对象的数组...这是正确的评估?...以及如何在代码中创建它?
答案 0 :(得分:0)
您需要创建一个对象数组,然后将其设置在容器对象中:
var instructions = []; // an array
for (var i = 0; i < selectedValues.length; i++) {
instructions.push({ TimeId: selectedValues[i] };
}
var Value = {TimeId: instructions}; // creating object with property TimeId as array of guid
var inst = JSON.stringify(Value);
.......
....... your ajax code
,并且您的class属性也应为array类型:
public Guid[] TimeId { get; set; }