Чтобы показать данные внутри модального всплывающего окна, вам нужен метод действия, который возвращает HTML-разметку, необходимую для модального всплывающего окна. Поэтому первым шагом является создание метода действия, который возвращает результат частичного просмотра.
public ActionResult Details(int id)
{
var product = db.PRODUCTS.Find(id);
if (product== null)
{
return HttpNotFound();
}
return View(product);
}
В приведенном выше простом примере я запрашиваю сущность и передаю объект сущности непосредственно в мое представление, используя метод PartialView
. Если у вас есть модель для просмотра, используйте ее.
Теперь в представлении Details.cshtml
мы напишем код для возврата разметки HTML , необходимой для модального всплывающего окна . Поскольку мы передаем объект PRODUCTS
в представление, мы позаботимся о том, чтобы наше представление также строго типизировалось для этого типа.
@model YourNamespaceHere.PRODUCTS
<div id="modal" class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title"> Details</h5>
<button type="button" class="close" data-dismiss="modal">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<h2>Hello from @Model.Name</h2>
</div>
<div class="modal-footer">
<button type="button" class="btn" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
В приведенном выше примере я просто печатаю значение свойства Name
объекта PRODUCTS
в модальном теле. Вы можете обновить его, чтобы при необходимости отобразить другие свойства.
Теперь мы внесем некоторые изменения в нашу HTML-разметку, отображаемую для продукта. Нам нужно событие click
в ссылке детали, чтобы открыть модальное диалоговое окно. Итак, давайте сначала дадим некоторые атрибуты элементу ссылки, которые мы позже сможем использовать для подключения события click. Здесь я собираюсь добавить дополнительный CSS-класс к ссылкам, modal-link
.
@Html.ActionLink("Details", "Details", new { id = prod.ID },
new { @class = "btn modal-link" })
Теперь давайте напишем некоторый код JavaScript для прослушивания события click
в элементе ссылки с классом CSS modal-link
, прочитаем значение атрибута href
элемента и сделаем Ajax-вызов этого URL и отрендерим ответ на этот вызов для построения модального диалога.
$(function () {
$('body').on('click', 'a.modal-link', function (e) {
e.preventDefault();
$("#modal").remove();
// Get the Details action URL
var url = $(this).attr("href");
//Make the Ajax call and render modal when response is available
$.get(url, function (data) {
$(data).modal();
});
});
});
Я использую CSS-класс в качестве селектора, вы можете использовать любой другой селектор, как пожелаете