[英]How do I Watch full details for each table row with ASP.NET Core and Html Modal
我會寫這個作為答案,因為它的評論太多了。
您只想將單個項目顯示為彈出窗口。 為此,您有多種通用方法:
最后,每個彈出窗口只是 HTML。 通常是一個<div>
元素。 因此,一種選擇是,在 razor 視圖中呈現所有彈出窗口,並使用 CSS 將它們全部隱藏。 現在您可以添加 css class 以使其中一個可見。
MyView.cshtml
@foreach(var reservation in Model.Reservations)
{
<div click="document.getElementById('@reservation.id').style.display='block';">
reservation list item
</div>
<div id="@reservation.id" style="display:none">reservation details</div>
}
您可以將部分封裝在 js 函數中,並且 reservation.id 可能不是 HTML id 屬性的正確屬性,但我想您已經明白了。
這里只渲染列表,然后使用 javascript 從服務器加載 HTML 片段。
MyController.cs
getReservationDetails(Guid reservationId) {
var reservation = load(reservationId);
// popup html only, no layout, no body tag, ...
return View(reservation);
}
在您的列表中,您需要一個 js function 將 reservationId 作為 URL 參數傳遞並在彈出窗口中顯示響應(預訂詳細信息)。 請參閱下面的一些提供模態的常見 JS 框架。
在這里,您將所有預訂作為數據傳遞給 javascript。 然后您可以在 JavaScript 中創建彈出窗口
<script>
const reservations = [{ ... reservation as json }, { ... }];
function showReservation(index) {
// render and show in JS
}
</script>
See How to get JSON object from Razor Model object in javascript . 使用 javascript 渲染 HTML 的示例庫: https://github.com/janl/mustache.js/
你在這里創建
reservationId
並以 JSON 形式返回詳細信息。參見例如如何從 a.Net Core Web API 返回 Json?
這只是一個起點。 如果您對細節有疑問,您可以考慮哪個選項適合您,嘗試一下,然后在新的 SO 帖子中繼續。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.