Не удается получить Dropzone. js для отправки дополнительных данных - PullRequest
1 голос
/ 02 мая 2020

Я использую Dropzone. js с. net ядро ​​3.1. Я могу заставить его вызывать действие моего контроллера, но я не могу заставить его посылать какие-либо дополнительные данные с запросом.

Это моя форма:

<form action="/api/photos/"
          class="dropzone needsclick dz-clickable"
          id="image-upload"
          method="post">
        <input type="hidden" name="eventId" value="1"/>
        <div class="dz-message needsclick">
            <span class="note needsclick">
                Drop files here or click to upload.
            </span>
        </div>
    </form>

Это мой Javascript :

<script>
            Dropzone.options.imageUpload = {
                dictDefaultMessage: "Drop files here or Click to Upload",
                addRemoveLinks: true, // Allows for cancellation of file upload and remove thumbnail
                init: function () {
                myDropzone = this;
                    myDropzone.on("sending", function (file, xhr, data) {
                data.append("message", "hello world");
                        console.log(data);
                    });
                    myDropzone.on("success", function (file, response) {
                console.log("Success");
                        myDropzone.removeFile(file);
                    });
                }
            };
    </script>

Это конечная точка моего контроллера

public async Task<IActionResult> PostPhoto(List<IFormFile> file)
        {
            ..code removed..
        }

Итак, как вы можете видеть, у меня есть скрытое поле в форме, которое должно было отправлять данные вместе с запросом, и Я также пытался добавить значение к данным формы через JS, но либо оно не отправляется, либо я не могу его найти. Я посмотрел в сетевой панели инструментов разработчика и вижу отправляемые изображения, но больше ничего. Или как бы найти его в контроллере, если он был отправлен? Я потратил на это целую вечность, что немного раздражает, пожалуйста, помогите!

1 Ответ

1 голос
/ 03 мая 2020

Вы можете добавить eventId к параметру url в действии формы, например: <form action="/api/photos/1"

Затем обновите действие контроллера:

    [HttpPost]
    [Route("api/photos/{eventId:int}")]
    public async Task<IActionResult> PostPhoto([FromRoute] int eventId, List<IFormFile> file)
    {
        ..code removed..
    }

Другое решение с использованием события sending, например вы делаете. Но вам нужно добавить param к вашему действию контроллера. Вы добавляете message в js, поэтому ваш код будет выглядеть так:

    public async Task<IActionResult> PostPhoto([FromForm]string message, List<IFormFile> file)
    {
        ..code removed..
    }
...