Я пытаюсь интегрировать плагин jQuery DataTables в проект ASP.Net MVC. Я следую примеру здесь < / а>. Когда я запускаю только образец кода в тестовом проекте, все работает. Но когда я пытаюсь отладить его в своем реальном приложении, AjaxHandler даже не запускается. Я что-то упускаю?

Вот вызывающий код jQuery:

    $(document).ready(function () {

        $('#myDataTable').dataTable({
            "bServerSide": true,
            "sAjaxSource": "/UX/AjaxHandler",
            "bProcessing": true,
            "aoColumns": [

                {
                    "sName": "ID",
                    "bSearchable": false,
                    "bSortable": false,
                    "fnRender": function (oObj) {

                        return '<a href=\"Details/' + oObj.aData[0] + '\">View</a>';
                    }
                },
                { "sName": "NAME" },
                { "sName": "ADDRESS" },
                { "sName": "TOWN" },

            ]

        });
    });

</script>

Потом мой куратор;

 public ActionResult AjaxHandler(jQueryDataTableParamModel param)
    {

        return Json(new
        {
            sEcho = param.sEcho,
            iTotalRecords = 97,
            iTotalDisplayRecords = 3,
            aaData = new List<string[]>() {
                new string[] {"1", "Microsoft", "Redmond", "USA"},
                new string[] {"2", "Google", "Mountain View", "USA"},
                new string[] {"3", "Gowi", "Pancevo", "Serbia"}
                }


        },
         JsonRequestBehavior.AllowGet);


    }
2
Andy J 8 Апр 2013 в 23:32
Я напоминаю, что с данными Ajax это немного странно, вам может потребоваться предоставить первую страницу данных при первом рендеринге таблицы.
 – 
Peter
8 Апр 2013 в 23:38
На вкладке сети в инструментах разработчика в браузере ничего не отображается?
 – 
Code Monkey
8 Апр 2013 в 23:40
Не в моем основном приложении. Если я запустил точно такой же код в новом проекте, я получу ответ Json на вкладке сети.
 – 
Andy J
8 Апр 2013 в 23:50

1 ответ

Лучший ответ

Если вызов этого представления выполняется с другого контроллера, кроме ux:

"sAjaxSource": "ux/AjaxHandler",

Если вызов этого представления осуществляется из ux, вам нужно только:

"sAjaxSource": "AjaxHandler",

Дополнительная косая черта перед ux вызывает ваше горе

Также я, согласно нашему обсуждению, ваш идентификатор на вашем столе не совпадает с идентификатором, на который ссылается ваш JS.

2
Robert 9 Апр 2013 в 00:07
Я тоже пробовал, но не помогло. Если я установил точку останова в AjaxHandler во время отладки, она даже не пострадала. Я думаю, что это может быть что-то в сценарии, но не уверен.
 – 
Andy J
8 Апр 2013 в 23:39
ActionResult - это «супер-набор» JsonResult, так что это не должно иметь значения.
 – 
Code Monkey
8 Апр 2013 в 23:40
AjaxHander находится в контроллере UX
 – 
Andy J
8 Апр 2013 в 23:45
Это представление заполнено другим контроллером, который отличается от ux?
 – 
Robert
8 Апр 2013 в 23:48
Нет. Это часть контроллера UX.
 – 
Andy J
8 Апр 2013 в 23:51