POST-форматы для контроллера web api всегда возвращают ошибку состояния модели - PullRequest
0 голосов
/ 25 января 2019

У меня есть метод asp web api Post в контроллере с моделью, которая может обрабатывать json-объект и файлы вместе

Это метод POST:

public async Task<IHttpActionResult> PostAsync([Required]Models.Email email, CancellationToken token = default(CancellationToken))
{
if (multipartContentProvider.IsMultipartRequest)
//manages the file upload..
}

return Content(HttpStatusCode.Created, "uploaded");
}

и вот javascript:

var formdata = new FormData();
//the file
formData.append('userpic', myFileInput.files[0], 'chris.jpg');

the json object
formData.append('email', new Blob([JSON.stringify({
    subject: "hello there",
    description: "this is a text"
})], {
    type: "application/json"
}));


fetch(url, {
            method: 'POST',
            body: formData,
            headers: {

            }
        }).then(function (response) {
            if (response.status === 404) {
                console.log("that did not work :(");
                return;
            }
            return response.json();
        }).then(function (data) {...}

В промежуточном программном обеспечении, которое обрабатывает многочастный запрос, я вижу элементы tvo в потоке, сам объект json с типом содержимого: application / json, и я вижу файл с типом содержимого = application / octet-stream.

Но он всегда завершается с ошибкой состояния модели, говоря:

{"message": "Запрос недействителен.", "modelState": {"email": ["Поле электронной почты является обязательным. "]}}

Как я могу загрузить запросить объект на контроллер и заставить его распознавать, что одним из элементов является модель электронной почты" email "?

...