Невозможно загрузить изображение - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь обновить изображение в своей базе данных, я определил в качестве модели свойств (связанной с базой данных) следующее:

public byte[] AvatarImage { get; set; }

, затем я создал другое свойство, которое хранит значение в ViewModel:

public IFormFile AvatarImage { get; set; }

эти шаги также описаны здесь в документе.Помимо своей формы, я добавил следующий html:

<div class="form-group text-center col-lg-12">                                                        
    <img src="@Model.AvatarImage" class="avatar img-circle" alt="avatar" />
   <h6>@Localizer["UploadNewAvatar"] ...</h6>                                        
   <input type="file" class="form-control" id="avatarUrl" asp-for="@Model.AvatarImages" />
</div>

, когда я отправляю форму, свойство AvatarImage даже null.Но я не понимаю, почему это происходит, потому что все остальные свойства формы правильно оценены

Ответы [ 3 ]

0 голосов
/ 18 октября 2018

Приведенное ниже присваивание <input type="file"> элемента представляется неправильным, поскольку оно использует директиву @Model, которая выводит значение свойства AvatarImages (а свойство не существует в классе viewmodel):

<input type="file" class="form-control" id="avatarUrl" asp-for="@Model.AvatarImages" />

Правильный способ - просто использовать имя свойства, как в примере ниже, потому что asp-for="PropertyName" эквивалентно model => model.PropertyName в помощнике HTML (предполагается, что у вас установлена ​​директива @model для класса viewmodel):

<input type="file" class="form-control" asp-for="AvatarImage" />

Также не забудьте указать атрибут enctype="multipart/form-data" в <form> помощник по тегам:

<form asp-controller="ControllerName" asp-action="ActionName" method="post" enctype="multipart/form-data">
    <!-- form contents here -->
</form>

Ссылка: Помощники по тегам в формах в ASP.NET Core

0 голосов
/ 23 октября 2018

Сначала добавьте enctype = "multipart / form-data" в форму;

Затем проверьте @model, две ситуации:

1.Используйте модель напрямую, поскольку изображение является типом байтового массива, вам необходимо преобразовать тип файла в byte [] во времяпроцесс представления.

2. Или вы можете использовать ViewModel и изменить тип параметра на viewmodel в методе.

0 голосов
/ 17 октября 2018

Звучит так, будто вы не указали тип формы.

Убедитесь, что у вас есть:

<form enctype="multipart/form-data">
 ... inputs
<form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...