#c# #.net #asp.net-web-api #asp.net-core #asp.net-core-mvc
#c# #.net #asp.net-web-api #asp.net-core #asp.net-core-mvc
Вопрос:
Это делается для отправки представления, которое использует ajax для извлечения данных.
Я пытаюсь получить изображение из корзины MongoDB GridFS. Операция загрузки работает. Но проблема в том, что модель представления, которую я использую, имеет:
public User User { get; set; }
public List<IFormFile> ImageUpload { get; set; }
Я получаю пользователя из контекста БД и использую его для идентификации изображения из корзины, и я хочу вернуть его в представление из контроллера.
Ниже приведен мой код контроллера:
public IActionResult AddEditUser(int id = 0)
{
if (id == 0)
{
return View(new UserImgBinder());
}
else
{
var userImageId = _context.User.Where(x => x.UserId.Equals(id)).Select(y => y.AvatarImg).ToString();
var stream = ContextNew.ImagesBucket.OpenDownloadStream(new ObjectId(userImageId.ToBson()));
var contentType = stream.FileInfo.Metadata["ContentType"].AsString;
//File(stream, contentType);
IFormFile file = new FormFile(stream, 0, stream.Length,"","");
var UserImgBinder = new UserImgBinder
{
User = _context.User.Where(x => x.UserId.Equals(id)).FirstOrDefault(),
ImageUpload = file
};
return View(UserImgBinder);
}
}
Поскольку ImageUpload имеет тип List, и то, что я пытаюсь передать, это не список, я получаю сообщение об ошибке.
Что я должен написать, чтобы решить эту проблему? Плох ли этот подход? Пожалуйста, помогите. Спасибо.
Комментарии:
1. У каждого пользователя есть несколько изображений? В этом случае вы можете создать новый список и добавить полученное изображение.
Ответ №1:
Попробуйте код, подобный:
var UserImgBinder = new UserImgBinder
{
User = _context.User.Where(x => x.UserId.Equals(id)).FirstOrDefault(),
ImageUpload = new List<IFormFile> {
file
}
};
Комментарии:
1. спасибо, приятель. Эта проблема решена. Не возражаете, если я задам вам вопрос? Приведенный выше код, когда id = 0, покажет, что новый пользователь добавляет представление, если нет, он получит идентификатор и покажет вид редактирования. Я ожидал, что приведенный выше код волшебным образом отправит файл IFormFile обратно в представление, где я пытаюсь отредактировать пользовательские данные, и имя файла будет отображаться помимо кнопки загрузки. Не могли бы вы сообщить мне, чего мне не хватает? Tx
2. @Neo Невозможно отправить
IFormfile
со стороны сервера на сторону клиента.