c# - 如何在控制器中映射 DataTable 参数(MVC Core 2.2)?
问题描述
我正在尝试将数据表参数发送到服务器,但是过去在 .NET Framework 中工作的内容似乎在 .NET Core 中不起作用。似乎它只是无法映射主DTParameters
对象中的对象,因为我得到了Length
, Draw
,的值Start
。
DTParameters
班级:
public class DTResult<T>
{
public int draw { get; set; }
public int recordsTotal { get; set; }
public int recordsFiltered { get; set; }
public IEnumerable<T> data { get; set; }
}
public abstract class DTRow
{
public virtual string DT_RowId
{
get { return null; }
}
public virtual string DT_RowClass
{
get { return null; }
}
public virtual object DT_RowData
{
get { return null; }
}
}
public class DTParameters
{
public int Draw { get; set; }
public DTColumn[] Columns { get; set; }
public DTOrder[] Order { get; set; }
public int Start { get; set; }
public int Length { get; set; }
public DTSearch Search { get; set; }
public string SortOrder
{
get
{
return Columns != null && Order != null && Order.Length > 0
? (Columns[Order[0].Column].Data + (Order[0].Dir == DTOrderDir.DESC ? " " + Order[0].Dir : string.Empty))
: null;
}
}
public int SearchOption { get; set; }
}
public class DTColumn
{
public string Data { get; set; }
public string Name { get; set; }
public bool Searchable { get; set; }
public bool Orderable { get; set; }
public DTSearch Search { get; set; }
}
public class DTOrder
{
public int Column { get; set; }
public DTOrderDir Dir { get; set; }
}
public enum DTOrderDir
{
ASC,
DESC
}
public class DTSearch
{
public string Value { get; set; }
public bool Regex { get; set; }
}
ajax 调用:
ajax: {
"type": "GET",
"url": '@Url.Action("GetCompanies", "Company")',
"data": function (data) {
return data;
}
我一直使用function (data) { return data = JSON.stringify(data); }
,但我必须在这里删除 stringify 以便至少将一些值发送到服务器。
在Startup.cs
:
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2).AddJsonOptions(options =>
{
options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
});
最后,CompanyController
:
public object GetCompanies(DTParameters param)
{
return _companyService.GetCompaniesForDatatable(param, CurrentClient);
}
的Search
属性param
始终为空。
解决方案
所以我将方法从GET
to更改为POST
有效。现在我得到了我需要的所有值。
嗯……
推荐阅读
- python - 在 python/numpy 中生成多对不相等的随机整数
- python - Matplotlib 显示不正确的颜色
- opencv - YOLO对象检测opencv绘制很多矩形
- azure-data-explorer - 如何:使用新数据更新表,但排除最后一秒并将其包含在下一次更新中
- javascript - 如何在 CodeMirror 中通过单击按钮来模拟按键?
- botframework - 如何获取有关我的机器人所属的所有群聊的信息。团队的 MsBot 框架(nodejs)
- mysql - 优化表时,有没有办法判断它“锁定”了多长时间?
- postgresql - 在 Postgres 中使用 ilike 进行连接中的部分字符串匹配
- geocoding - 'NoneType' 对象不可迭代...提名地理编码
- security - Rest API 实时棘手问题 - 需要答案