Не найдено подходящего конструктора для типа сущности FormFile - PullRequest
1 голос
/ 05 мая 2019

Я хотел бы иметь возможность загружать изображения и сохранять их в определенной папке. Каждый раз, когда я пытаюсь, я получаю эту ошибку:

"InvalidOperationException: не найден подходящий конструктор для типа объекта« FormFile ». Следующие параметры не могут быть связаны со свойствами объекта:« baseStream »,« baseStreamOffset »,« length »,« name »,« fileName ». «

И я не знаю, как это исправить.

Seminarie.cs

[Required]
        [DataType(DataType.Upload)]
        [FileExtensions(Extensions = "jpg,png,jpeg,bmp")]
        public FormFile Foto { get;  set; }

seminarieViewModel.cs

[Display (Name = "Kies een foto")]
        [DataType (DataType.Upload)]
        public FormFile Foto { get; set; }



public SeminarieViewModel(Seminarie seminarie)
        {
            DatumDoorgaat = seminarie.DatumDoorgaat;
            Onderwerp = seminarie.Onderwerp;
            Beschrijving = seminarie.Beschrijving;
            PlaatsenBeschikbaar = seminarie.PlaatsenBeschikbaar;
            Spreker = seminarie.Spreker;
            Locatie = seminarie.Locatie;
            Foto = seminarie.Foto;
            PrijsLeden = seminarie.PrijsLeden;
            PrijsNietLeden = seminarie.PrijsNietLeden;
            BeginUur = seminarie.BeginUur;
            EindUur = seminarie.EindUur;
            PrijsInschrijvingsAttest = seminarie.PrijsInschrijvingsAttest;
        }

SeminarieController.cs

public IActionResult WijzigSeminarie(int id)
        {
            Seminarie seminarie = _seminarieRepository.GetById(id);
            if (seminarie == null)
                return NotFound();
            ViewData["IsEdit"] = true;
            ViewData["Seminaries"] = GetSeminarieSelectList();
            return View(new SeminarieViewModel(seminarie));
        }

SeminarieController.cs

[HttpPost]
        public IActionResult WijzigSeminarie(int id, SeminarieViewModel seminarieViewModel)
        {
            try
            {
                Seminarie seminarie = _seminarieRepository.GetById(id);
                FormFile file = seminarieViewModel.Foto;
                if (file == null)
                {

                    seminarie.EditSeminarie(seminarieViewModel.DatumDoorgaat, seminarieViewModel.Onderwerp, seminarieViewModel.Beschrijving, seminarieViewModel.PlaatsenBeschikbaar,
                        new Spreker(seminarie.Spreker.Voornaam, seminarie.Spreker.Achternaam, seminarie.Spreker.Email, seminarie.Spreker.Foto, seminarie.Spreker.Beschrijving),
                        new Locatie(seminarieViewModel.Locatie.Straat, seminarieViewModel.Locatie.Huisnummer, seminarieViewModel.Locatie.Gemeente, seminarieViewModel.Locatie.Postcode,
                        seminarieViewModel.Locatie.Land), seminarieViewModel.PrijsLeden, seminarieViewModel.PrijsNietLeden, seminarieViewModel.BeginUur, seminarieViewModel.EindUur,
                        seminarieViewModel.PrijsInschrijvingsAttest);
                }
                else
                {
                    FileInfo fileInfo = new FileInfo(file.FileName);
                    string ex = fileInfo.Extension;

                    string fileNaam = seminarieViewModel.Onderwerp.Replace(" ", "");

                    var FilePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/seminarieFiles/", fileNaam + ex);

                    if (System.IO.File.Exists(FilePath))
                        System.IO.File.Delete(FilePath);

                    fileNaam += ex;

                    var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/seminarieFiles/", fileNaam);

                    using (var stream = new FileStream(path, FileMode.Create))
                    {
                        file.CopyTo(stream);
                    }

                    //SeminarieViewModel SModel = new SeminarieViewModel(seminarie, fileNaam);
                    seminarie.EditSeminarie(seminarieViewModel.DatumDoorgaat, seminarieViewModel.Onderwerp, seminarieViewModel.Beschrijving, seminarieViewModel.PlaatsenBeschikbaar,
                        new Spreker(seminarie.Spreker.Voornaam, seminarie.Spreker.Achternaam, seminarie.Spreker.Email, seminarie.Spreker.Foto, seminarie.Spreker.Beschrijving),
                        new Locatie(seminarieViewModel.Locatie.Straat, seminarieViewModel.Locatie.Huisnummer, seminarieViewModel.Locatie.Gemeente, seminarieViewModel.Locatie.Postcode,
                        seminarieViewModel.Locatie.Land), seminarieViewModel.Foto, seminarieViewModel.PrijsLeden, seminarieViewModel.PrijsNietLeden, seminarieViewModel.BeginUur, seminarieViewModel.EindUur,
                        seminarieViewModel.PrijsInschrijvingsAttest);
                }

                _seminarieRepository.SaveChanges();
                TempData["message"] = $"U heeft seminarie {seminarie.Onderwerp} succesvol gewijzigd.";
            }
            catch
            {
                TempData["error"] = "Sorry, er is een probleem opgetreden, de seminarie was niet gewijzigd...";
            }
            return RedirectToAction(nameof(AdminSeminarie));
        }

WijzigSeminarie.cshtml

<div class="form-group">
        <label asp-for="Foto">Foto over het seminarie</label>
        <input asp-for="Foto" class="form-control" />
        <span asp-validation-for="Locatie.Land" class="text-danger"></span>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...