Ajax POST в MVC - PullRequest
       49

Ajax POST в MVC

2 голосов
/ 05 августа 2020

Я работаю с MVC Project, и следующий ajax не работает должным образом. Я хочу, чтобы данные передавались в действие Create в Story Controller, которое на данный момент равно NULL, когда ajax вызываются.

Я хочу получать данные в качестве параметров в моем действии:

[HttpPost]    
public async Task<IActionResult> Create(CreateStoryViewModel model, string count, List<string> val){}

Скрипт:

<script>
    $(document).ready(function () {
        var counter = 0;
        $("#addrow").on("click", function () {
            var newRow = $("<tr>");
            var cols = "";
            cols += '<td class="col-md-3"><input type="text" class="form-control" name="sent" asp-for="Sentence.SentenceText" /></td>';
            cols += '<td class="col-md-1"><input type="file" class="form-control-file border" name="img"></td>';
            cols += '<td class="col-md-1"><input type="file" class="form-control-file border" name="aud"></td>';
            cols += '<td class="col-md-1"><input type="button" class="ibtnDel btn btn-md btn-danger " value="delete"></td><hr />';

            newRow.append(cols);
            $('tbody').append(newRow);
            counter++;
        });
        $("table.order-list").on("click", ".ibtnDel", function (event) {
            $(this).closest("tr").remove();
            counter -= 1
        });
        $('#publish').click(function () {
            var values = [];
            $('input[name="sent"]').each(function (i, elem) {
                values.push($(elem).val());
            });
            alert(values.join(', '));
            alert(counter);
            $.ajax({
                type: "POST",
                url: "/Story/Create",
                data: {
                    count: counter,
                    val: values
                },
                //contentType: "application/json; charset=utf-8",
                dataType: 'json',
                success: function (data) {
                },
                error: function (data) {
                }
            });
        });
    });
</script>
<input type="submit" value="Publish" name="btn" id="publish" class="btn btn-default btn-block btn-icon" />

1 Ответ

4 голосов
/ 05 августа 2020

Контроллер имеет 3 определенных параметра:

    Create(CreateStoryViewModel model, string count, List<string> val){}

Однако ваш пост AJAX не включает параметр model.

Вам нужно либо включить его в скрипт:

                data: {
                    model: createStoryModel,
                    count: counter,
                    val: values
                },

или удалите его из контроллера:

    Create(string count, List<string> val){}

Дополнительное редактирование:

Это поможет, если вы включите минимальный полный html, который позволяет тест. Переменная values ​​представляет собой массив, поэтому, если вы ожидаете, что в контроллере будет список, вам может потребоваться добавить это:

values = JSON.stringify(values);

перед вызовом AJAX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...