【发布时间】:2021-03-10 10:35:48
【问题描述】:
单击<tr> 时,我正在尝试使用用户详细信息创建popup modal。我在控制器上创建函数
[HttpGet]
public IActionResult GetUserDetails(int? Id)
{
TicketVM ticketVM = new()
{
ApplicationUser = _unitOfwork.ApplicationUser.Get(Id.GetValueOrDefault())
};
if (Id == null)
{
return NotFound();
}
if(ticketVM.ApplicationUser == null)
{
return NotFound();
}
return View(ticketVM);
}
在我的Index.cshtml
@model IEnumerable<VmSTicketing.Models.Ticket>
@{
ViewData["Title"] = "Index";
Layout = "~/Views/Shared/AdminLTE/_Layout.cshtml";
}
<br />
<div class="row">
<div class="col-6">
<h2 class="text-primary">Lista tiketa</h2>
</div>
<div class="col-6 text-right">
<a class="btn btn-primary" asp-action="Upsert"><i class="fas fa-plus"></i> Novi tiket</a>
</div>
</div>
<br />
<div class="p-4 border rounded">
<table id="tblData" class="table table-striped table-bordered" style="width:100%">
<thead class="thead-dark">
<tr class="table-info">
<th>Opis</th>
<th>Datum i vrijeme slanja</th>
<th>Vrsta Tiketa</th>
<th>Status</th>
<th>Datum i vrijeme zavrsetka</th>
<th>Korisnik</th>
<th></th>
</tr>
</thead>
</table>
</div>
<partial name="UserDetails" />
@section Scripts{
<script src="~/js/ticket.js"></script>
}
在ticket.js 我添加了类似的东西
function loadDataTable() {
dataTable = $('#tblData').DataTable({
"ajax": {
"url": "/Manager/Ticket/GetAll"
},
"columns": [
{ "data": "description", "width": "10%" },
{ "data": "dateAndTime", "width": "15%" },
{ "data": "ticketType.name", "width": "10%" },
{ "data": "status", "width": "10%" },
{ "data": "answered", "width": "15%" },
{ "data": "applicationUser.name", "width": "10%" },
{
"data": "id",
"render": function (data) {
return `
<div class="text-center">
<a href="/Manager/Discussion/OpenDiscussion/${data}" class="btn btn-primary text-white" style="cursor:pointer">
<i class="fas fa-comments"></i>
</a>
<a href="/Manager/Ticket/Details/${data}" class="btn btn-success text-white" style="cursor:pointer">
<i class="fas fa-info"></i>
</a>
<a onclick=Delete("/Manager/Ticket/Delete/${data}") class="btn btn-danger text-white" style="cursor:pointer">
<i class="fas fa-trash-alt"></i>
</a>
</div>
`;
}, "width": "15%"
}
]
});
}
这是我的弹出窗口功能
$(".detalji").click(function () {
var id = $(this).attr("userDetails");
$.get("/Manager/Ticket/UserDetails?id=" + id, function (result, status) {
$("#container").append(result);
$("#userDetails").modal({ show: true })
})
})
但是当我点击<tr> 时,什么都没有显示,并且在控制台日志中我得到错误
jquery.min.js:2 GET https://localhost:44315/Manager/Ticket/GetUserDetails?id=undefined 500
我尝试了解问题所在并尝试调试,但我认为问题出在我的函数中,其中模态框弹出 谁能告诉我我在哪里做错了,我做错了什么?
这里是演示
更新
UserDetails.cshtml
@model VmSTicketing.Models.ViewModels.TicketVM
<div class="modal fade" id="userDetails">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">X</button>
<h3 class="modal-title">Podaci o Useru</h3>
</div>
<div class="modal-body">
<div class="row dataTable">
<div class="col-md-4">
<label class="control-label">Ime i Prezime</label>
</div>
<div class="col-md-8">
<input type="text" class="form-control" asp-for="Ticket.ApplicationUser.Name" disabled id="ImePrezime" name="ImePrezime">
</div>
</div>
<br>
<div class="row dataTable">
<div class="col-md-4">
<label class="control-label">Email Adresa</label>
</div>
<div class="col-md-8">
<input type="text" class="form-control" asp-for="Ticket.ApplicationUser.Email" disabled id="Email" name="Email">
</div>
</div>
<br>
<div class="row dataTable">
<div class="col-md-4">
<label class="control-label">Broj Telefona</label>
</div>
<div class="col-md-8">
<input type="text" asp-for="Ticket.ApplicationUser.PhoneNumber" class="form-control" disabled id="BrTel" name="BrTel">
</div>
</div>
<br />
<div class="row dataTable">
<div class="col-md-4">
<label class="control-label">Klijent</label>
</div>
<div class="col-md-8">
<input type="text" asp-for="Ticket.ApplicationUser.Client" class="form-control" disabled id="klijent" name="klijent">
</div>
</div>
</div>
</div>
</div>
</div>
【问题讨论】:
-
id未定义:https://localhost:44315/Manager/Ticket/GetUserDetails?id=undefined。$(this).attr("userDetailsMM");是什么?它不在您发布的代码中。此外,您的演示代码与此处显示的代码完全不同,并且演示似乎可以工作? -
我发布 DEMO 只是为了让用户了解我要创建的内容。
userDetailsMM我没有发表我的观点。抱歉,我会更新我的问题 -
我的意思是,
tr.table-info行上的属性userDetailsMM在哪里?它似乎不在您的代码中,这可能是它未定义的原因。 -
查看 Index.cshtml。在我的代码的开头
-
我有并且文本
userDetailsMM直到 jquery 部分才会出现在您的代码中
标签: javascript c# datatable asp.net-core-mvc