я создал API для вложений, он должен получать информацию о модели с файлами, если я отправляю файлы, модель недействительна, если я не отправлял файлы, данные модели показывают
Модель
public class AttachmentFilesViewModel
{
public long Id { get; set; }
public string FileName { get; set; }
public string FileExt { get; set; }
public IFormFile files { get; set; }
public AttachmentViewModel AttachmentViewModel {get;set; }
}
Контроллер модели 2
public class AttachmentViewModel
{
public long Id { get; set; }
public string Type { get; set; }
public long TypeID { get; set; }
public string FileDesc { get; set; }
public List<AttachmentFilesViewModel> attachmentFiles {get;set; }
}
получает файлы из представления правильными здесь я создаю свою Viewmodel из файлов, файлы правильные
[HttpPost]
public async Task<IActionResult> Create(AttachmentViewModel attachment, IFormFile[] Files)
{
LawyerAPI lawyerAPI = new LawyerAPI();
HttpClient httpClient = lawyerAPI.InitializeClient();
if (Files != null && Files.Count() > 0)
{
attachment.attachmentFiles = new List<AttachmentFilesViewModel>();
foreach (var item in Files)
{
AttachmentFilesViewModel att = new AttachmentFilesViewModel();
att.FileExt = Path.GetExtension(item.FileName);
att.FileName = item.FileName;
att.files = item;
attachment.attachmentFiles.Add(att);
}
}
HttpResponseMessage res = await httpClient.PostAsJsonAsync("api/nofactory/createattachment", attachment);
List<AttachmentViewModel> model = new List<AttachmentViewModel>();
model.Add(attachment);
return View("index", model);
}
Я также пытался вручную сериализовать
API здесь я получаю ноль, если я добавляю файл в модель, если я комментирую вышеупомянутый foreach, и список файлов пуст, я получаю правильную модель, я также пытался [FromBody]
[Route("createattachment")]
// POST api/values
public IActionResult Post([FromForm] AttachmentViewModel attachment)
{}
как получить файлыAPI * Спасибо
Редактировать
Просмотреть код
@using (Html.BeginForm(null, null, FormMethod.Post, new { @id ="frmAddAttachment" ,enctype="multipart/form-data"})){@Html.HiddenFor(model => model.Type)@Html.HiddenFor(model => model.TypeID)<div class="row">
<div class="card">
<div class="card-content">
<div class="form-horizontal">
<div class="col-md-10 col-sm-12 col-xs-12">
<div class="form-group">
@Html.TextBoxFor(b => b.FileDesc})
</div>
</div>
<div class="col-md-10 col-sm-12 col-xs-12">
<input type="file" name="Files" multiple="multiple" />
<button type="submit" class="btn btn-success"> Save</button>
</div>
</div>
</div>
</div>
Я думаю, что представление в порядке, я получаю файлы в контроллере, нопроблема при отправке их в API