jquery - 在 jquery 数据表组件中使用 Ajax 发布 ViewModel 的问题
问题描述
序列化表单内容后,我需要执行 POST 并使用 Ajax 发送视图模型。执行 POST 时,视图模型到达时带有空字段。我试过使用“JSON.stringfy”并转换类,但它也不起作用。有谁知道如何帮助我?
注意:Ajax 脚本使用引号,因为我携带的是数据表 jquery。
谢谢 :)
控制器:
[HttpPost]
[AllowAnonymous]
[Route("financeiro-gerenciar/getFinanceiro")]
public JsonResult GetFinanceiro (FinanceiroPesquisaAvancadaViewModel financeiroPesquisaAvancadaViewModel)
{
}
阿贾克斯:
"ajax": {
"url": '/financeiro-gerenciar/getFinanceiro',
"data": function (d) {
var frmFinanceiroPesquisaAvancada = $("#frm-pesquisa-avancada").serialize();
d.financeiroPesquisaAvancadaViewModel = frmFinanceiroPesquisaAvancada;
},
"type": "POST",
"datatype": "json"
}
视图模型:
public class FinanceiroPesquisaAvancadaViewModel
{
[Key]
public int Id { get; set; }
public int PessoaEmpresaId { get; set; }
public FinanceiroTipo FinanceiroTipo { get; set; }
public string NumeroDocumento { get; set; }
public decimal ValorDocumento { get; set; }
public FinanceiroSituacao FinanceiroSituacao { get; set; }
public int PessoaClienteId { get; set; }
public int PessoaFornecedorId { get; set; }
public DateTime? DataInicial { get; set; }
public DateTime? DataFinal { get; set; }
public DateTime? DataHoraCadastro { get; set; }
public DateTime? DataHoraInclusao { get; set; }
public bool PadraoSistema { get; set; }
}
解决方案
这是一个演示: View(使用 serializeArray 和 foreach 将表单数据更改为对象);
<form id="frm-pesquisa-avancada">
Id<input asp-for="Id" /><br />
PessoaEmpresaId<input asp-for="PessoaEmpresaId" /><br />
NumeroDocumento<input asp-for="NumeroDocumento" />
</form>
<button onclick="LoadPack()">GetData</button>
<table id="tblList" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr>
<th>a</th>
<th>b</th>
<th>c</th>
<th>d</th>
</tr>
</thead>
</table>
@section scripts{
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.21/css/jquery.dataTables.css">
<script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.js"></script>
<script type="text/javascript">
function LoadPack(url) {
//use serializeArray and foreach to change form data to an object
var formdata = $("#frm-pesquisa-avancada").serializeArray();
var data = {};
$(formdata).each(function (index, obj) {
data[obj.name] = obj.value;
});
$('#tblList').DataTable({
destroy: true,
ajax: {
"type": "POST",
"url": '/financeiro-gerenciar/getFinanceiro',
"dataType": "json",
"data": data
},
columns: [
{ "data": "a", responsivePriority: 1, "searchable": true },
{ "data": "b", responsivePriority: 2, "searchable": true },
{ "data": "c", responsivePriority: 3, "searchable": true },
{ "data": "d", responsivePriority: 4, "searchable": true },
],
});
};
</script>
}
控制器:
[HttpPost]
[AllowAnonymous]
[Route("financeiro-gerenciar/getFinanceiro")]
public IActionResult GetFinanceiro(FinanceiroPesquisaAvancadaViewModel financeiroPesquisaAvancadaViewModel) {
List<DataTableModel> l = new List<DataTableModel> {
new DataTableModel{ a="a1",b="b1",c="c1",d="d1"},
new DataTableModel{ a="a2",b="b2",c="c2",d="d2"},
new DataTableModel{ a="a3",b="b3",c="c3",d="d3"},
new DataTableModel{ a="a4",b="b4",c="c4",d="d4"},
};
return Json(new {data=l });
}
楷模:
public class DataTableModel
{
public string a { get; set; }
public string b { get; set; }
public string c { get; set; }
public string d { get; set; }
}
public class FinanceiroPesquisaAvancadaViewModel
{
[Key]
public int Id { get; set; }
public int PessoaEmpresaId { get; set; }
//public FinanceiroTipo FinanceiroTipo { get; set; }
public string NumeroDocumento { get; set; }
public decimal ValorDocumento { get; set; }
//public FinanceiroSituacao FinanceiroSituacao { get; set; }
public int PessoaClienteId { get; set; }
public int PessoaFornecedorId { get; set; }
public DateTime? DataInicial { get; set; }
public DateTime? DataFinal { get; set; }
public DateTime? DataHoraCadastro { get; set; }
public DateTime? DataHoraInclusao { get; set; }
public bool PadraoSistema { get; set; }
}
推荐阅读
- javascript - HTTP 函数以代码 16 结尾,文档未更新
- python - 用不同的列集连接 Pandas 数据框
- mysql - java.net.ConnectException:连接被拒绝:连接。数据夹
- express - 开玩笑/超级测试错误 - 'instanceof' 的右侧不可调用
- excel - Excel Vlookup / 匹配重复值
- url - 从 gcp 项目自定义站点 URL
- laravel - 外国限制的问题 -
- java - Kafka + Spring 本地代理可能不可用。视窗 10
- python - 返回满足熊猫条件的第一列号
- excel - 函数抛出编译错误:在暗线上找不到项目或库