У меня есть ASP. NET MVC 4 веб-страница с галереей изображений. Я пытаюсь заставить «большое изображение» загружаться асинхронно с помощью вызова AJAX, поскольку загрузка страницы займет слишком много времени, если бы я загружал свои большие изображения заранее.
Вот что я имею в мой взгляд:
@{
string srcMain = "";
}
<script src="https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.css" />
<script src="https://cdn.jsdelivr.net/gh/fancyapps/fancybox@3.5.7/dist/jquery.fancybox.min.js"></script>
<script type="text/javascript">
function getLargeImage(imageID, imageType) {
$.ajax({
url: "/Explore/GetLargeImage?i=" + imageID + "&objectType=" + imageType,
type: "POST",
dataType: "json",
success: function (data) {
return data;
}
})
}
</script>
...
foreach (var item in Model.Image.ExhibitionImages)
{
<div class="tile-outer">
<div class="tile-inner">
@if (item.Image_MimeType_MediumPad != null)
{
srcMain = "data:" + item.Image_MimeType_MediumPad + ";base64," + @Html.Raw(Convert.ToBase64String(item.Image_Data_MediumPad));
<a data-fancybox="gallery" data-type="ajax" data-src="getLargeImage(@item.ID, @Model.Image.Type);" href="javascript:;">
<img src="@srcMain" id="@anchorID" class="tile-image" alt="Image" />
</a>
}
</div>
</div>
}
...
Вот JsonResult в моем контроллере:
[HttpPost]
public JsonResult GetLargeImage(int i, int objectType)
{
var imageResult = LoadSP_ImageLarge("sp_ImageLarge", i, objectType);
List<ImageLarge> list_ImageLarge = new List<ImageLarge>();
foreach (var row in imageResult)
{
list_ImageLarge.Add(new ImageLarge
{
Image_Data_string = (row.Image_Data != null) ? string.Format("data:" + row.Image_MimeType + ";base64,{0}", Convert.ToBase64String(row.Image_Data)) : null
});
}
string imageString = list_ImageLarge.FirstOrDefault().Image_Data_string;
return Json(imageString, JsonRequestBehavior.AllowGet);
}
Я следую шаблону fancybox3 для загрузки контента через AJAX - вставлено ниже:
<a data-fancybox data-type="ajax" data-src="my_page.com/path/to/ajax/" href="javascript:;">
AJAX content
</a>
Я установил точку останова на метод JsonResult в моем контроллере, и курсор никогда не входит в него, поэтому я пытаюсь что-то сделать неправильно, пытаясь вызвать метод. Кто-нибудь видит мою ошибку? Я не понимаю, как адаптировать пример кода data-src="my_page.com/path/to/ajax/"
к моему существующему коду. Кажется, мне не нравится мой javascript вызов функции: data-src="getLargeImage(@item.ID, @Model.Image.Type);"
Что мне делать по-другому?