C# 数据类型为JSON的ajax post调用操作时,ASP.NET Core 2.2中的数据未成功绑定
我检查了许多其他人发布的类似问题,并尝试了不同的解决方案,但没有成功 我有一个asp.net core 2.2 web应用程序(控制器,而不是rest api),并在启动时添加了json格式化程序的配置:C# 数据类型为JSON的ajax post调用操作时,ASP.NET Core 2.2中的数据未成功绑定,c#,json,asp.net-core,asp.net-core-2.2,C#,Json,Asp.net Core,Asp.net Core 2.2,我检查了许多其他人发布的类似问题,并尝试了不同的解决方案,但没有成功 我有一个asp.net core 2.2 web应用程序(控制器,而不是rest api),并在启动时添加了json格式化程序的配置: AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver()); 在我看来,我这样做: function crearObjetoTramiteR
AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());
在我看来,我这样做:
function crearObjetoTramiteRequisito() {
var tramiteGeneralId = retornarItemGridTramitesGenerales().Id;
var tramitesRequisitos = [];
$.each(arrayDocumentoSeleccionado, function (index, value) {
tramitesRequisitos.push({ Id: 0, TramiteDocumentoId: value, TramiteGeneralId: tramiteGeneralId});
});
return tramitesRequisitos;
}
function guardarTramitesRequisitos() {
onCloseWindowRequisitos();
var requestData = crearObjetoTramiteRequisito();
$.ajax({
url: "@Url.Action("CrearRequisitos", "ConfiguracionTramitesGenerales")",
type: 'POST',
headers: {
"RequestVerificationToken": antiForgeryTokens()
},
dataType: 'json',
data: {'requestData': JSON.stringify(requestData) },
success: function (result) {
console.log(result);
},
error: function (e) {
console.log(e);
}
});
}
我希望控制器参数中包含一个JSON数组
ViewModel:
public class TramiteRequisitoViewModel
{
public int Id { get; set; }
public int TramiteDocumentoId { get; set; }
public int TramiteGeneralId { get; set; }
}
控制器是:
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult CrearRequisitos (List<TramiteRequisitoViewModel> requestData)
{
int x = 0;
[HttpPost]
[ValidateAntiForgeryToken]
公共JsonResult Crearequisitos(列表请求数据)
{
int x=0;
requestData参数包含0个元素
无论我使用[FromBody]param属性还是使用数组JSON对象而不是字符串化它们,都不起作用,也不要使用contentType:“application/JSON;charset=utf-8”将此更改为
数据:{'requestData':JSON.stringify(requestData)}
数据:{JSON.stringify(requestData)}
ContentType
是请求数据类型,dataType
是响应数据类型,您可以参考his
数据的格式应该是data:JSON.stringify(requestData)
下面是一个简单的测试:
脚本:
<button id="btn" onclick="guardarTramitesRequisitos()" value="Submit"></button>
@section scripts{
<script>
function crearObjetoTramiteRequisito() {
var tramitesRequisitos = [];
tramitesRequisitos.push({ Id: 0, TramiteDocumentoId: 1, TramiteGeneralId: 1 });
tramitesRequisitos.push({ Id: 0, TramiteDocumentoId: 2, TramiteGeneralId: 1 });
console.log(tramitesRequisitos);
return tramitesRequisitos;
}
function guardarTramitesRequisitos() {
var requestData = crearObjetoTramiteRequisito();
$.ajax({
url: "@Url.Action("CrearRequisitos", "ConfiguracionTramitesGenerales")",
type: 'POST',
contentType:'application/json; charset=utf-8',
dataType: 'json',
data: JSON.stringify(requestData),
success: function (result) {
console.log(result);
},
error: function (e) {
console.log(e);
}
});
}
</script>
}
[HttpPost]
public JsonResult CrearRequisitos([FromBody]List<TramiteRequisitoViewModel> requestData)
{
return Json(requestData);
}
@节脚本{
函数crearObjetoTramiteRequisito(){
var tramitesRequisitos=[];
push({Id:0,TramiteDocumentoId:1,TramiteGeneralId:1});
push({Id:0,TramiteDocumentoId:2,TramiteGeneralId:1});
控制台日志(tramitesRequisitos);
回程电车;
}
函数GuardRamiteRequisitos(){
var requestData=crearObjetoTramiteRequisito();
$.ajax({
url:“@url.Action(“crearequisitos”,“ConfiguracionTramitesGenerales”)”,
键入:“POST”,
contentType:'application/json;charset=utf-8',
数据类型:“json”,
数据:JSON.stringify(requestData),
成功:功能(结果){
控制台日志(结果);
},
错误:函数(e){
控制台日志(e);
}
});
}
}
控制器:
<button id="btn" onclick="guardarTramitesRequisitos()" value="Submit"></button>
@section scripts{
<script>
function crearObjetoTramiteRequisito() {
var tramitesRequisitos = [];
tramitesRequisitos.push({ Id: 0, TramiteDocumentoId: 1, TramiteGeneralId: 1 });
tramitesRequisitos.push({ Id: 0, TramiteDocumentoId: 2, TramiteGeneralId: 1 });
console.log(tramitesRequisitos);
return tramitesRequisitos;
}
function guardarTramitesRequisitos() {
var requestData = crearObjetoTramiteRequisito();
$.ajax({
url: "@Url.Action("CrearRequisitos", "ConfiguracionTramitesGenerales")",
type: 'POST',
contentType:'application/json; charset=utf-8',
dataType: 'json',
data: JSON.stringify(requestData),
success: function (result) {
console.log(result);
},
error: function (e) {
console.log(e);
}
});
}
</script>
}
[HttpPost]
public JsonResult CrearRequisitos([FromBody]List<TramiteRequisitoViewModel> requestData)
{
return Json(requestData);
}
[HttpPost]
公共JsonResult Crearequisitos([FromBody]列表请求数据)
{
返回Json(requestData);
}
结果:
您在浏览器中检查了ContentType吗?应该是
ContentType:“application/json;charset=utf-8”
我使用它但没有成功,因为ContentType是从服务器到客户端的响应数据类型。我编辑了文章。