Я использую 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