[英]Razor Pages ASP.NET Core - OnPost() using datatables.net search bar returns no objects
[英]Datatables.net and asp.net core WebApi get search[value]
我正在尝试使用 asp.net 核心 WebApi-Controller 找出 Datatables.net 中的服务器端处理。
DT 正在向控制器发送一个 http-get,其中包含一些给定的参数,如下所述: Serverside-Description
我现在的问题是如何在我的控制器中获取 search[value] 字符串参数的值。 这是发送到控制器的值为“Hal”的参数:
所有其他参数都在我的控制器中填写。
所以我认为问题在于这个搜索**[值]**-事物。 我如何告诉控制器读取这个参数?
正如你在我的第二个屏幕截图中看到的,我也试图定义是从那里获取参数。 但是 [FromHeader] 或 [FromQuery] 是否有效。
感谢您的帮助和建议。 帕特里克
我已经想出了如何解决它。
我只是使用 HttpContext-Class 来获取名为“search[value]”的查询。
像这样:
var searchWord = HttpContext.Request?.Query["search[value]"].ToString();
不知道这是否是干净的方式,但它有效。
当我从 UI 发出请求时,我使用了 contentType: "application/json"
const table = $('#datatableDefault').DataTable({
ajax: {
url: '/endpoint_toServer',
method: 'post',
contentType: "application/json",
data: function (d) {
// Add your additional data if needed
d.fromDate = date[0];
d.toDate = date[1];
return JSON.stringify(d);
}
},
serverSide: true,....
并在控制器中
var queryString = new StreamReader(HttpContext.Request.Body).ReadToEndAsync();
var requestParams = JsonConvert.DeserializeObject<CustomDataTableRequest>(queryString.Result);
public class CustomDataTableRequest: DatatableRequest
{
public DateTime FromDate { get; set; }
public DateTime ToDate { get; set; }
}
public class DatatableRequest
{
public List<ColumnData> Columns { get; set; }
public int Draw { get; set; }
public bool SaveExcel { get; set; }
public int Length { get; set; }
public int Start { get; set; }
public List<Order> Order { get; set; }
public List<Search> Search { get; set; }
}
public class ColumnData
{
public string Name { set; get; }
public string Data { set; get; }
public bool Searchable { set; get; }
public bool Orderable { set; get; }
}
public class Order
{
[JsonProperty(PropertyName = "column")]
public int ColumnIndex { set; get; }
[JsonProperty(PropertyName = "dir")]
public string Direction { set; get; }
}
public class Search
{
[JsonProperty(PropertyName = "value")]
public string Value { set; get; }
[JsonProperty(PropertyName = "regex")]
public bool Regex{ set; get; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.