2017-01-31 6 views
0

Я пытаюсь использовать fancybox и помещать изображения внутри модального, и, когда я нажимаю на изображение, появляется еще одно модальное шоу по первому. Проблема в том, что большая картина остается за основным модальным, и она больше, чем экран. Как я могу это исправить? Возможно ли, или я должен создать другую страницу для использования fancybox? Заранее спасибо.Как добавить Fancybox внутри модала

PartialView внутри модального содержания:

@foreach (var x in Model) 
{ 
<a class="fancybox" rel="group" href="@Url.Content("~/Uploads/" + x.FileName)" title="@x.FileTitle"><img src="@Url.Content("~/Uploads/" + x.FileName)" alt="" /></a> 
} 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".fancybox").fancybox({ 
      helpers: { 
       title: { 
        type: 'over' 
       } 
      } 
     }); 
    }); 
</script> 

АЯКС вызова:

$Modal.on('show.bs.modal', function() { 
    $Modal.find(".modal-content .modal-body").html(htmlSpinner); 
    $.get('@Url.Action("ModalDetails")', { id: $(".mybutton").val() }, function (data) { 
     $Modal.find(".modal-content .modal-body").html(data); 
    }); 
}); 

Контроллер:

public PartialViewResult ModalDetails(Guid id) 
    { 
     var temp = db.Ticket_Message_Files.Where(o => o.IdTicketMessage == id && o.FileType == 0).ToList(); 
     var model = new List<DAL.Ticket_Message_Files>(); 

     foreach (var x in temp) 
     { 
      DAL.Ticket_Message_Files file = new DAL.Ticket_Message_Files 
      { 
       FileOriginalName = x.FileOriginalName, 
       FileName = x.FileName, 
       FileTitle = x.FileTitle, 
       FileType = x.FileType, 
       IdTicketMessage = x.IdTicketMessage 
      }; 
      model.Add(file); 
     } 
     return PartialView(model); 
    } 

Вот результаты:

Main modal

Fancybox view

+0

вы можете перейти на FancyBox v3 и использовать его для отображения модальности в то время как изображение открыто, б ecause он поддерживает несколько экземпляров. – Janis

ответ

1

Вы должны вызвать fancybox({ после добавления данных в модальном теле в фантазии поля не связываются с элементом, который не находится в DOM еще так после добавления данных в модальное тело, вы должны вызвать функцию fancybox({ пожалуйста, найти ниже для получения дополнительной информации

$Modal.on('show.bs.modal', function() { 
    $Modal.find(".modal-content .modal-body").html(htmlSpinner); 
    $.get('@Url.Action("ModalDetails")', { id: $(".mybutton").val() }, function (data) { 
     $Modal.find(".modal-content .modal-body").html(data); 

//after appending data to modal body 
$(".fancybox").fancybox({ 
      helpers: { 
       title: { 
        type: 'over' 
       } 
      } 
     }); 
    }); 
}); 
+0

Спасибо за ответ, но он все еще не работает должным образом. –

+0

Посмотрите на [эту скрипку] (http://jsfiddle.net/1aeur58f/83/), а я создал пример здесь, может быть, это поможет – Curiousdev

+0

Хорошо, я идиот. Ваш код прав, но проблема в том, что я связал css как скрипт, поэтому стиль не работал должным образом. Спасибо за помощь, оцените это. –