Редактор таблиц данных в MVC

Я хочу использовать DataTables Editor, но хочу вернуть себе полный контроль над публикацией, а не позволять Editor-Server обрабатывать ее. Есть ли способ сделать это? Я могу указать URL-адрес в Ajax на стороне клиента, и он отправляет обратно контроллеру, единственная проблема в том, что я не могу понять, как получить данные из вызова. Это часть Ajax:

 $(document).ready(function () {
    editor = new $.fn.dataTable.Editor({
        ajax: ({
            url: "/../AnyController/Update",
            dataType: "json",
            contentType: "application/json",
            type: 'POST'
        }),
        formOptions: {
            inline: {
                onBlur: true,
                submit: 'all'
            }
        },
        table: "#timetracker",
        fields: [
            {
                label: "Date1:",
                name: "Date1"
            },
            {
                label: "Comment 1:",
                name: "Comment1",
                type: "textarea"
            }
        ]
    });

А это метод Contoller:

[HttpPost]
        public JsonResult Update(EditorReturnData wtd)
        {
            return Json(wtd);
        }

Я пытался использовать множество других сигнатур методов, но значение wtd всегда равно нулю. У меня нет проблем с загрузкой таблицы, просто передавая данные Json, но как взять на себя процесс обновления из редактора таблиц данных, я ускользаю.

У меня есть одно обновление. Я не мог понять, как Get, Post и Put могут использовать один и тот же метод контроллера, и метод не принимает никаких параметров, даже для Post и Put. Наконец я понял, что Editor передает данные в заголовке, и к ним можно получить доступ с помощью Request.Body. Оттуда это должна быть dll Datatables, которая выполняет фактические обновления.


person Community    schedule 15.11.2018    source источник


Ответы (1)


enter code hereЯ обнаружил, что лучший способ сделать это — отправить сообщение обратно из ajax в другой контроллер для отправки и размещения, и вы можете получить доступ к возвращаемым данным из тела HttpRequest следующим образом.

 public ActionResult Rest(HttpRequest request)
        {
            var stream = request.Body;
            string url = new StreamReader(stream).ReadToEnd();
            string newUrl;
            while ((newUrl = Uri.UnescapeDataString(url)) != url)
                url = newUrl;

Я добавил этот код в RestController из примера Rest из демо-версии Datatables Dot Net Core, который можно загрузить с https://editor.datatables.net/

Аякс выглядит так

editor = new $.fn.dataTable.Editor( {
    ajax: {
        create: {
            type: 'POST',
            url:  '/api/rest/create'
        },
        edit: {
            type: 'PUT',
            url:  '/api/rest/edit'
        },
        remove: {
            type: 'DELETE',
            url:  '/api/rest/remove'
        }
    },
person Community    schedule 18.11.2018
comment
Для полноты возвращаемые данные выглядят следующим образом: action=edit&data[row_43][first_name]=Bruno&data[row_43][last_name]=Nash&data[row_43][position]=Software+Engineer&data[row_43][office]=London&data[row_43 ][extn]=6222&data[row_43][start_date]=2011-05-03&data[row_43][salary]=163500 - person ; 18.11.2018