Как связать модель JQuery DataTable с методом POST в ASP.NET - PullRequest
0 голосов
/ 09 декабря 2018

Я использую ajax с методом «GET» для получения данных DataTables, и мой ModelBinder по-прежнему работает нормально.Пока я не изменил свой метод на "POST", мой ModelBinder не может получить никакого запроса.

Вот мой ModelBinder:

public class DataTableModelBinder : IModelBinder
{
    public Task BindModelAsync(ModelBindingContext bindingContext)
    {

        var request = bindingContext.ActionContext.HttpContext.Request.Query;
        // Retrieve request data
        var draw = Convert.ToInt32(request["draw"]);
        var start = Convert.ToInt32(request["start"]);
        var length = Convert.ToInt32(request["length"]);

        // Search
        var search = new DataTableSearch
        {
            Value = request["search[value]"],
            Regex = Convert.ToBoolean(request["search[regex]"])
        };

        // Order
        var o = 0;
        var order = new List<DataTableOrder>();
        while (!string.IsNullOrEmpty(request["order[" + o + "][column]"]))
        {
            order.Add(new DataTableOrder
            {
                Column = Convert.ToInt32(request["order[" + o + "][column]"]),
                Dir = request["order[" + o + "][dir]"]
            });
            o++;
        }
        // Columns
        var c = 0;
        var columns = new List<DataTableColumn>();
        while (!string.IsNullOrEmpty(request["columns[" + c + "][name]"]))
        {
            columns.Add(new DataTableColumn
            {
                Data = request["columns[" + c + "][data]"],
                Name = request["columns[" + c + "][name]"],
                Orderable = Convert.ToBoolean(request["columns[" + c + "][orderable]"]),
                Searchable = Convert.ToBoolean(request["columns[" + c + "][searchable]"]),
                Search = new DataTableSearch
                {
                    Value = request["columns[" + c + "][search][value]"],
                    Regex = Convert.ToBoolean(request["columns[" + c + "][search][regex]"])
                }
            });
            c++;
        }

        var result = new DataTableRequest
        {
            Draw = draw,
            Start = start,
            Length = length,
            Search = search,
            Order = order.ToArray(),
            Columns = columns.ToArray()
        };

        bindingContext.Result = ModelBindingResult.Success(result);

        return Task.CompletedTask;
    }
}

Что я действительно хочу знать, так это как я могу получитьЗапрос от ajax POST в моей модели Binder?

Редактировать: Когда я редактирую

var request = bindingContext.ActionContext.HttpContext.Request.Query;

в

Request.Form

* 1017Я получаю сообщение об ошибке:исключение типа 'System.InvalidOperationException'

Извините за мой английский.Заранее спасибо

Редактировать:

Неважно.Я решаю проблему, мне просто нужно поставить [FromForm] в параметре моего контроллера.А затем, используя Request.Form, получите запрос.Отправляю из таблицы данных ajax

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...