Я немного расстроен. Этот же код работает и в другом месте моего проекта. По какой-то причине он не выполняет действие контроллера. Когда страница загружается, появляется таблица данных и появляется всплывающее окно обработки, как будто она не может найти записи. Я поставил точку останова на действие контроллера и обнаружил, что оно даже не достигает его.Код Javascript:
[HttpPost]
public ActionResult GetList()
{
// Server Side Parameters
int start = Convert.ToInt32(Request["start"]);
int length = Convert.ToInt32(Request["length"]);
string searchValue = Request["search[value]"];
string sortColumnName = Request["column[" + Request["order[0][column]"] + "][name]"];
string sortDirection = Request["order[0][dir]"];
List
prodList = new List();
using (GeneralEntities db = new GeneralEntities())
{
prodList = db.PartSearchView.ToList();
int totalRows = prodList.Count;
if (!string.IsNullOrEmpty(searchValue))
{
prodList = prodList.Where(x => x.PartNumber != null && x.PartNumber.ToLower().Contains(searchValue.ToLower())).ToList();
}
int totalRowsAfterFilteing = prodList.Count;
// Sorting
prodList = prodList.OrderBy(sortColumnName + " " + sortDirection).ToList();
prodList = prodList.Skip(start).Take(length).ToList();
return Json(new { data = prodList, draw = Request["draw"], recordsTotal = totalRows, recordsFiltered = totalRowsAfterFilteing }, JsonRequestBehavior.AllowGet);
}
}
Я пробовал изменить URL-адрес на @Url.Action("GetList", "Home").
Возможно, это как-то связано с маршрутизацией, но я не вижу нигде в конфигурации маршрута, где есть проблема.
Я попытался перейти непосредственно к URL-адресу, и он вытащил страницу 404, в отличие от той, которая работает, которая выдает ошибку, но также попадает в контроллер action.
Спасибо за помощь!
ОБНОВЛЕНИЕ:
Ниже приведена конфигурация моего маршрута. Я изменил имя страницы и действие контроллера на PartSearch, прежде чем это было просто Parts. Все еще та же проблема. Это часть домашнего контроллера.
Я изменил имя, потому что у меня есть PartsController. PartsController используется в серверной части и требует учетных данных для входа. Поэтому я не смог использовать его для этого.
ОБНОВЛЕНИЕ:
Я нашел свою проблему. Как бы глупо это ни казалось, основная причина, по которой это не подействовало на контроллер, заключалась в том, что в строке, где у меня есть columnsDefs: [{ orderable: false, Targets: [2, 3, 4, 5, 6] }], Было с 1 по май, есть 6 столбцов, но я забыл посчитать первый как 0. Я уже сталкивался с этим раньше, когда использовал оператор foreach вместо серверной стороны, потому что форматирование не отображается на стороне сервера. load - имеется в виду кнопки, поиск, количество записей и т.д. Но все равно заполняет записи. Я думаю, на стороне сервера происходит сбой перед генерацией записи. Так что к маршрутизации это вообще не имеет никакого отношения. И ошибка, которую я получал, я не думал, что она имеет к этому какое-то отношение, поскольку там говорилось что-то о стиле. Я нашел ответ на форуме dataTables. Спасибо всем, кто помог в этом.
Я немного расстроен. Этот же код работает и в другом месте моего проекта. По какой-то причине он не выполняет действие контроллера. Когда страница загружается, появляется таблица данных и появляется всплывающее окно обработки, как будто она не может найти записи. Я поставил точку останова на действие контроллера и обнаружил, что оно даже не достигает его.[b]Код Javascript: [code] $(document).ready(function () { var oTableMenuPermission = ""; $("#PartsListTable").dataTable({ "ajax": { "url": "/Home/GetList", "type": "POST", "datatype": "json", }, "responsive": true, "bRetrieve": true, "bProcessing": true, "deferRender": true, "dom": 'lBfrtip', "serverSide": "true", "order": [0, "PartNumber"], "language": { "processing": "processing...Please wait" }, "buttons": [ { extend: 'copyHtml5', exportOptions: { columns: ':visible' } } , { extend: 'excelHtml5', exportOptions: { columns: ':visible' } } , { extend: 'csvHtml5', exportOptions: { columns: ':visible' } } , { extend: 'pdfHtml5', exportOptions: { columns: ':visible' } } , { extend: 'print', exportOptions: { columns: ':visible' } } , 'colvis' ], columnDefs: [{ orderable: false, targets: [2, 3, 4, 5, 6] }],
}); }); [/code] А вот действие контроллера: [code] [HttpPost] public ActionResult GetList() { // Server Side Parameters int start = Convert.ToInt32(Request["start"]); int length = Convert.ToInt32(Request["length"]); string searchValue = Request["search[value]"]; string sortColumnName = Request["column[" + Request["order[0][column]"] + "][name]"]; string sortDirection = Request["order[0][dir]"];
List prodList = new List(); using (GeneralEntities db = new GeneralEntities()) { prodList = db.PartSearchView.ToList(); int totalRows = prodList.Count; if (!string.IsNullOrEmpty(searchValue)) { prodList = prodList.Where(x => x.PartNumber != null && x.PartNumber.ToLower().Contains(searchValue.ToLower())).ToList(); }
} [/code] Я пробовал изменить URL-адрес на @Url.Action("GetList", "Home"). Возможно, это как-то связано с маршрутизацией, но я не вижу нигде в конфигурации маршрута, где есть проблема. Я попытался перейти непосредственно к URL-адресу, и он вытащил страницу 404, в отличие от той, которая работает, которая выдает ошибку, но также попадает в контроллер action. Спасибо за помощь! ОБНОВЛЕНИЕ: Ниже приведена конфигурация моего маршрута. Я изменил имя страницы и действие контроллера на PartSearch, прежде чем это было просто Parts. Все еще та же проблема. Это часть домашнего контроллера. [code] public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } [/code] Я изменил имя, потому что у меня есть PartsController. PartsController используется в серверной части и требует учетных данных для входа. Поэтому я не смог использовать его для этого. ОБНОВЛЕНИЕ: Я нашел свою проблему. Как бы глупо это ни казалось, основная причина, по которой это не подействовало на контроллер, заключалась в том, что в строке, где у меня есть columnsDefs: [{ orderable: false, Targets: [2, 3, 4, 5, 6] }], Было с 1 по май, есть 6 столбцов, но я забыл посчитать первый как 0. Я уже сталкивался с этим раньше, когда использовал оператор foreach вместо серверной стороны, потому что форматирование не отображается на стороне сервера. load - имеется в виду кнопки, поиск, количество записей и т.д. Но все равно заполняет записи. Я думаю, на стороне сервера происходит сбой перед генерацией записи. Так что к маршрутизации это вообще не имеет никакого отношения. И ошибка, которую я получал, я не думал, что она имеет к этому какое-то отношение, поскольку там говорилось что-то о стиле. Я нашел ответ на форуме dataTables. Спасибо всем, кто помог в этом.