Архитектура приложения проста. Пользователь может загружать изображения, которые хранятся на сервере, в папке за пределами wwwroot
. Относительный путь изображений хранится в базе данных.
Как гласит заголовок, при извлечении изображения с помощью действия контроллера в теле карты и последующем расширении происходит странное заикание / прыжок / отставание в первый раз. Я думаю, что это ч / б изображение загружается после того, как DOM готов, и при расширении карты, он должен пересчитать высоту (поправьте меня, если я не прав). Я пытался удалить отступы / поля, но безуспешно. Вот код:
Вид:
<div class="card border-top-0">
<div class="expand">
<a href="#" class="text-primary float-right" data-toggle="collapse" data-target="#collapse_1" aria-expanded="false" aria-controls="collapse_1"><i class="fas fa-angle-double-down"></i></a>
</div>
<div class="card-header border-0">...</div>
<div class="collapse" id="collapse_1">
<div class="card-body border-0">
@{
string path = @Url.Action("RenderImage", "MyController", new { imagePath = Model.ImagePath });
}
<div class="row">
<div class="col-12">
<h5 class="card-title mb-1">My Image</h5>
<div class="overflow-hidden" style="height: 200px; width: 200px;">
<a href=@path target="_blank">
<img class="img-thumbnail" src=@path alt="" />
</a>
</div>
</div>
</div>
</div>
</div>
</div>
Контроллер:
public IActionResult RenderImage(string imagePath)
{
string filePath = Path.Combine(_hostingEnvironment.ContentRootPath, "Uploads", imagePath);
FileStream stream = new FileStream(filePath, FileMode.Open);
return File(stream, ImageHelper.GetContentType(imagePath));
}
Если я заменим path
на какой-нибудь URL-адрес изображения, например этот , он будет работать без скипа. Если я использую изображение из wwwroot
, проблем тоже нет.
Насколько я понимаю, представление отображается на сервере, а затем отправляется клиенту. Разве string path = @Url.Action("RenderImage", "MyController", new { imagePath = Model.ImagePath });
не должен выполняться при отображении страницы? Такое ощущение, что это немного после взаимодействия с представлением карты. Что мне не хватает? Мне нужна помощь, чтобы понять, что происходит и как я могу это решить.