<script type="text/javascript">
$(document).ready(function () {
$('#vehiclesTable').DataTable({
"processing": true,
"serverSide": true,
"ajax": {
"url": "@Url.Action("GetAllVehicles", "Vehicles")",
"type": "GET",
"error": function (xhr, error, thrown) {
console.log("Error: ", xhr.responseText);
}
},
"columns": [
{ "data": "customerName" },
{ "data": "year" },
{ "data": "make" },
{ "data": "model" },
{ "data": "trim" },
{ "data": "engineSize" },
{ "data": "transmission" },
{ "data": "transmissionType" },
{ "data": "mileage" },
{
"data": "id",
"render": function (data, type, row) {
return `<a href="/Vehicles/Details/${data}" class="btn btn-info">Details</a>
<a href="/Vehicles/Edit/${data}" class="btn btn-warning">Edit</a>
<a href="/Vehicles/Delete/${data}" class="btn btn-danger">Delete</a>`;
},
"orderable": false
}
],
"order": [[0, "asc"]]
});
});
</script>
<- script in index.html
[HttpGet]
public async Task<IActionResult> GetAllVehicles()
{
var draw = HttpContext.Request.Query["draw"].FirstOrDefault();
var start = Request.Query["start"].FirstOrDefault();
var length = Request.Query["length"].FirstOrDefault();
var sortColumn = Request.Query["columns[" + Request.Query["order[0][column]"].FirstOrDefault() + "][data]"].FirstOrDefault();
var sortColumnDirection = Request.Query["order[0][dir]"].FirstOrDefault();
var searchValue = Request.Query["search[value]"].FirstOrDefault();
int pageSize = length != null ? Convert.ToInt32(length) : 0;
int skip = start != null ? Convert.ToInt32(start) : 0;
int recordsTotal = 0;
// Fetch all data
var vehiclesData = _context.Vehicles
.Include(j => j.Customer)
.Select(j => new
{
j.Id,
CustomerName = j.Customer.FirstName + " " + j.Customer.LastName,
j.Year,
j.Make,
j.Model,
j.Trim,
j.EngineSize,
j.Transmission,
j.TransmissionType,
j.Mileage
});
// Search
if (!string.IsNullOrEmpty(searchValue))
{
vehiclesData = vehiclesData.Where(j =>
j.CustomerName.Contains(searchValue) ||
j.Year.ToString().Contains(searchValue) ||
j.Make.Contains(searchValue) ||
j.Model.Contains(searchValue) ||
j.Trim.Contains(searchValue) ||
j.EngineSize.Contains(searchValue) ||
j.Transmission.Contains(searchValue) ||
j.TransmissionType.Contains(searchValue) ||
j.Mileage.Contains(searchValue)
);
}
// Sorting
if (!(string.IsNullOrEmpty(sortColumn) && string.IsNullOrEmpty(sortColumnDirection)))
{
var sortExpression = $"{sortColumn} {sortColumnDirection}";
vehiclesData = vehiclesData.OrderBy(sortExpression);
}
// Total number of rows count
recordsTotal = vehiclesData.Count();
// Paging
var data = vehiclesData.Skip(skip).Take(pageSize).ToList();
// Returning Json Data
var jsonData = new
{
draw = draw,
recordsFiltered = recordsTotal,
recordsTotal = recordsTotal,
data = data.Select(v => new
{
customerName = v.CustomerName,
year = v.Year,
make = v.Make,
model = v.Model,
trim = v.Trim,
engineSize = v.EngineSize,
transmission = v.Transmission,
transmissionType = v.TransmissionType,
mileage = v.Mileage,
id = v.Id
})
};
return Ok(jsonData);
}
<- VehiclesController GetAllVehicles()
Again this works great when I run it locally. It just breaks when I push it to Azure.
I tried different calls, routing and every change worked locally but broke when pushed over to Azure. I have another controller with an almost identical call just different data and that ones works perfectly.