Как отправить объект JSON с несколькими значениями в контроллер из Ajax - PullRequest
0 голосов
/ 01 февраля 2019

Этот пост Ajax работает для одного значения, но мне нужно, чтобы он работал с несколькими значениями.Чего мне не хватает?

Я уже пытался сделать публичный класс 'Value' списком AND 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» ... это правильная оценка? ... и как создать его в коде, пожалуйста?

1 Ответ

0 голосов
/ 01 февраля 2019

Вам необходимо создать массив объектов, а затем установить его в объекте контейнера:

 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

, а свойство вашего класса также должно иметь тип array:

public Guid[] TimeId { get; set; }
...