Можно ли разместить IFormCollection и Object в действии?
public Task CreateEMail(IFormCollection collection, [FromBody] Model model)
Я пытаюсь отправить запрос на публикацию в WebAPI из Angular, и запрос представляет собой комбинацию загруженных файлов и модели.
Угловой код:
let model = {title:'test', subject:'test'};
let formData = new FormData();
for (let i = 0; i < this.droppedFilesData.length; i++) {
let file = this.droppedFilesData[i];
let fileName = file.name;
formData.append(fileName, file);
}
this.service.createEmail(formData, model); // how to implement to post formData and model
Код WebAPI:
public Task CreateEMail(IFormCollection collection, [FromBody] Model model)
{
...
}
Как мне реализовать этот WebAPI?
Обновление: я думаю о том, чтобы добавить все в FormCollection, но это был бы действительно плохой код для анализа данных
да, я добавил еще код. У меня нет идей по реализации этого пункта





Вы можете опубликовать только одно значение содержимого в методе действия веб-API. Попробуй это:
Угловой код:
<input type = "file" name = "uploadFiles" (change) = "onSelectFile($event)" />
onSelectFile(event: any) {
const fi = event.srcElement;
if (fi.files && fi.files[0]) {
const fileToUpload = fi.files[0];
const formData = new FormData();
const model = new Model('name', '[email protected]');
formData.append(fileToUpload.name, fileToUpload);
console.info(JSON.stringify(model));
formData.append('model', JSON.stringify(model));
this.http.post(this.requestUploadURL, formData).subscribe();
}
}
Код веб-API:
public async Task<IActionResult> UploadFile()
{
var formFile = Request.Form.Files?.FirstOrDefault();
var canParse = Request.Form.TryGetValue("model", out var model);
if (canParse)
{
var data = JsonConvert.DeserializeObject<Model>(model.ToString());
}
return Ok();
}
Кроме того, вы можете использовать привязку настраиваемых параметров, например JObject, FormDataCollection или Query String.
Надеюсь, это поможет.
да, я знаю это, но есть ли у нас способ разделить форму и модель?
пожалуйста, покажите нам свой код