Почему в MemoryStream CopyToAsync я получаю исключение NullReferenceException?

Мой вопрос отличается от помеченного как дубликат, потому что я знаю, что означает ошибка, просто я понятия не имею, почему я получаю его при использовании IFormFile а также MemoryStream согласно документации. Подобных вопросов в SO к моему еще не было и нет.

В моем приложении Core MVC после использования метода CopyToAsync MemoryStream я получаю

NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта.

Моя модель:

public class Aktualnosci
    {
        public long ID { get; set; }
        public string Tytul { get; set; }
        public string Tresc { get; set; }
        public DateTime Dzien { get; set; }
        public byte[] AktualnosciImage { get; set; }
    }

Моя модель представления:

public class AktualnosciCreateVM
    {
        public long ID { get; set; }
        [Required(ErrorMessage = "Proszę wypełnić pole.")]
        [StringLength(40, ErrorMessage = "Max 40 znaków.")]
        public string Tytul { get; set; }
        [Required(ErrorMessage = "Proszę wypełnić pole.")]
        public string Tresc { get; set; }
        [Required(ErrorMessage = "Proszę wypełnić pole.")]
        public DateTime Dzien { get; set; }
        public IFormFile AktualnosciImage { set; get; }
    }

мой POST Метод в контроллере:

[Authorize(Roles = "Moderatorzy")]
        // POST: Aktualnosci/Edit/5
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Edit(AktualnosciCreateVM aktualnosci)
        {
            if (ModelState.IsValid)
            {
                Aktualnosci targetAktualnosci = aktualnosciRepository.AktualnosciList
                    .FirstOrDefault(m => m.ID == aktualnosci.ID);
                using (var memoryStream = new MemoryStream())
                {
//here I am getting an error v
                    await aktualnosci.AktualnosciImage.CopyToAsync(memoryStream);
                    targetAktualnosci.AktualnosciImage = memoryStream.ToArray();
                    targetAktualnosci.Dzien = aktualnosci.Dzien;
                    targetAktualnosci.Tresc = aktualnosci.Tresc;
                    targetAktualnosci.Tytul = aktualnosci.Tytul;
                }
                aktualnosciRepository.SaveAktualnosci(targetAktualnosci);
                return RedirectToAction(nameof(Index));
            }
            else
            {
                return View(aktualnosci);
            }
        }

я использовал IFormFile То же, что и >> ДОКУМЕНТАЦИЯ <<;; и >> ПРИМЕР <<;; говорит.

Также я нашел похожий вопрос, но без ответа >> ЗДЕСЬ <<;;

РЕДАКТИРОВАТЬ:

@model AktualnosciCreateVM
@{
    ViewBag.Title = "Edycja";
}
@Html.AntiForgeryToken()
<br />
<div class="col-md-6 kontenerStrony">
    <div class="tytulStrony col-md-12">Edycja</div>
    <div class="space"></div>
    <form asp-action="Edit" asp-controller="Aktualnosci" method="post" enctype="multipart/form-data">
        <input type="hidden" asp-for="ID" />
        <div class="form-group">
            <div class="col-md-10">
                <label asp-for="AktualnosciImage">Zmień obraz dla tego wpisu:</label>
                <input asp-for="AktualnosciImage" type="file" name="files"/>
            </div>
        </div>
        (...)
        <div class="text-center">
            <button class="btn btn-success" type="submit">Zapisz</button>
            <a href="javascript:history.go(-1)" class="btn btn-primary">Powrót</a>
        </div>

        <div class="space"></div>
    </form>
</div>

0 ответов

Другие вопросы по тегам