Ниже приведена рабочая демонстрация с данными тестирования, см. Ее.
Javascript код
$(document).ready(function () {
var url = window.location.search;
//console.log(url);
var status = GetURLParameter("status");
switch (status) {
case "inprocess": loadDataTable("GetOrderList?status=inprocess"); break;
case "pending": loadDataTable("GetOrderList?status=pending"); break;
case "completed": loadDataTable("GetOrderList?status=completed"); break;
case "rejected": loadDataTable("GetOrderList?status=rejected"); break;
case "approved": loadDataTable("GetOrderList?status=approved"); break;
default: loadDataTable("GetOrderList?status=all");
}
});
function GetURLParameter(sParam) {
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++) {
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam) {
return sParameterName[1];
}
}
}
function loadDataTable(url) {
//console.log(url);
$('#tblData').DataTable({
"ajax": {
"url": "/Admin/Order/" + url
},
"columns": [
{
"data": "id",
"render": function (data) {
console.log(data);
return `
<div class="row text-center">
<a href="/Admin/Order/Details/${data}" class="btn btn-success text-white" style="cursor:pointer">
<i class="fas fa-edit">${data}</i>
</a>
</div>
`;
},
"width": "15%"
},
{ "data": "applicationUser.Name", "width": "15%" },
{ "data": "applicationUser.phoneNumber", "width": "15%" },
{ "data": "applicationUser.email", "width": "15%" },
{ "data": "orderStatus", "width": "15%" },
{ "data": "orderTotal", "width": "15%" }
]
});
}
Действия контроллера
[Area("Admin")]
[Route("Admin/Order/")]
public class OrderController : Controller
{
private readonly List<AppUserOrder> appUserOrders;
public OrderController()
{
appUserOrders = new List<AppUserOrder>
{
new AppUserOrder
{
Id = 1,
ApplicationUserId = Guid.NewGuid().ToString(),
ApplicationUser =new ApplicationUser
{
UserName = "Jesus",
Email = "Jesus email here",
PhoneNumber = "673533658"
},
OrderStatus = "pending",
OrderTotal = 25
},
new AppUserOrder
{
Id = 2,
ApplicationUserId = Guid.NewGuid().ToString(),
ApplicationUser =new ApplicationUser
{
UserName = "Ray",
Email = "Ray email here",
PhoneNumber = "673533659"
},
OrderStatus = "completed",
OrderTotal = 39
},
new AppUserOrder
{
Id = 3,
ApplicationUserId = Guid.NewGuid().ToString(),
ApplicationUser =new ApplicationUser
{
UserName = "Wall",
Email = "Wall email here",
PhoneNumber = "673533656"
},
OrderStatus = "inprocess",
OrderTotal = 128
},
new AppUserOrder
{
Id = 4,
ApplicationUserId = Guid.NewGuid().ToString(),
ApplicationUser =new ApplicationUser
{
UserName = "Jack",
Email = "Jack email here",
PhoneNumber = "673533655"
},
OrderStatus = "rejected",
OrderTotal = 206
},
new AppUserOrder
{
Id = 5,
ApplicationUserId = Guid.NewGuid().ToString(),
ApplicationUser =new ApplicationUser
{
UserName = "Terry",
Email = "Terry email here",
PhoneNumber = "673533653"
},
OrderStatus = "approved",
OrderTotal = 102
}
};
}
public IActionResult Index(string status)
{
return View();
}
[Route("GetOrderList")]
[HttpGet]
public IActionResult GetOrderList(string status)
{
List<AppUserOrder> res = appUserOrders;
if (status!="all")
{
res = appUserOrders.AsQueryable().Where(a => a.OrderStatus == status).ToList();
}
return new JsonResult(new { data = res });
}
}
Классы моделей
public class AppUserOrder
{
public int Id { get; set; }
public string ApplicationUserId { get; set; }
public ApplicationUser ApplicationUser { get; set; }
public int OrderTotal { get; set; }
public string OrderStatus { get; set; }
}
public class ApplicationUser
{
[JsonPropertyName("Name")]
public string UserName { get; set; }
public string Email { get; set; }
public string PhoneNumber { get; set; }
}
Данные тестирования
{"data":[{"id":1,"applicationUserId":"e6aaa9ac-2bd7-4aa7-8f74-e6bce58236ad","applicationUser":{"Name":"Jesus","email":"Jesus email here","phoneNumber":"673533658"},"orderTotal":25,"orderStatus":"pending"},{"id":2,"applicationUserId":"85eb90a0-44e9-4266-b6d0-3f72fc122c24","applicationUser":{"Name":"Ray","email":"Ray email here","phoneNumber":"673533659"},"orderTotal":39,"orderStatus":"completed"},{"id":3,"applicationUserId":"c1031399-4ebe-4d64-addf-4852f19e30f7","applicationUser":{"Name":"Wall","email":"Wall email here","phoneNumber":"673533656"},"orderTotal":128,"orderStatus":"inprocess"},{"id":4,"applicationUserId":"02ff9515-5633-4981-ab06-2b1f9b01c375","applicationUser":{"Name":"Jack","email":"Jack email here","phoneNumber":"673533655"},"orderTotal":206,"orderStatus":"rejected"},{"id":5,"applicationUserId":"3e524698-f2b5-488b-bffb-4287d3447da5","applicationUser":{"Name":"Terry","email":"Terry email here","phoneNumber":"673533653"},"orderTotal":102,"orderStatus":"approved"}]}
Результат теста
