C# 从Ajax传递到ASP.NET核心控制器时,参数设置为null
我在使用Ajax将数据发布到ASP.NET核心控制器时遇到问题 我有一个具有这种结构的实体:C# 从Ajax传递到ASP.NET核心控制器时,参数设置为null,c#,jquery,ajax,asp.net-core-mvc,C#,Jquery,Ajax,Asp.net Core Mvc,我在使用Ajax将数据发布到ASP.NET核心控制器时遇到问题 我有一个具有这种结构的实体: public class ProprieteBienFinance { public int ProprieteBienFinanceId { get; set; } public string Libelle { get; set; } public int Rang { get; set; } public virtual ICollection<ChoixPr
public class ProprieteBienFinance
{
public int ProprieteBienFinanceId { get; set; }
public string Libelle { get; set; }
public int Rang { get; set; }
public virtual ICollection<ChoixPropriete> Modalites { get; set; }
public TypePropriete TypePropriete { get; set; }
public ICollection<MetaBlocageAffichagePropriete> BlocageAffichagePropriete { get; set; }
public string? Dependance { get; set; }
public ProprieteBienFinance()
{
this.Modalites = new List<ChoixPropriete>();
this.BlocageAffichagePropriete = new List<MetaBlocageAffichagePropriete>();
}
}
点击更新链接应该调用控制器上的一个方法,并将表单带到更新中
<a title="Mettre à jour le type de financement" class="btn btn-primary btn-link btn-sm Edit" onclick="LoadUpdateForm(@counter)">
<i class="material-icons">edit</i>
</a>
function LoadUpdateForm(rowNumber) {
//les proprietes de base sont le libelle et le type
var idLibelleChamps = "#libelle_prop_" + rowNumber;
var libelle = $(idLibelleChamps).html();
var caracteristique = {};
caracteristique = proprietes.find(element => element.rang == rowNumber);
var dataToSend = {};
dataToSend.caracteristiqueToUpdate = caracteristique;
dataToSend.caracteristiques = proprietes;
debugger;
$.ajax
(
{
url: window.location.origin + "/ParametrageBiensFinanciers/AfficherFormulaireModifCaracteristique",
type: "post",
dataType: "json",
beforeSend: function (x) {
if (x && x.overrideMimeType) {
x.overrideMimeType("application/json;charset=UTF-8");
};
x.setRequestHeader('RequestVerificationToken', document.getElementById('RequestVerificationToken').value);
},
data: dataToSend,
complete: function (result) {
$("#AjouterCaracteristiques").html(result.responseText);
$(".selectpicker").selectpicker();
$("TypePropriete").change(function () {
targetType($(this));
});
var extendedProperty = $("#selectExtendId option:selected");
if ((typeof ($(extendedProperty)) != "undefined") && $(extendedProperty).text() != "Choisir la caractéristique dépendante") {
var dataToSend = {};
dataToSend.libelle = $(extendedProperty).text();
dataToSend.caracteristiques = proprietes;
dataToSend.caracteristiqueToUpdate = caracteristique;
$.ajax
(
{
url: window.location.origin + "/ParametrageBiensFinanciers/EtendreUneCaracteristique",
type: "post",
dataType: "json",
beforeSend: function (x) {
if (x && x.overrideMimeType) {
x.overrideMimeType("application/json;charset=UTF-8");
};
x.setRequestHeader('RequestVerificationToken', document.getElementById('RequestVerificationToken').value);
},
data: dataToSend,
complete: function (result) {
$("#checkExtendDiv").html(result.responseText);
$(".selectpicker").selectpicker();
}
}
);
}
$("#addPropertiesPane").show();
}
}
);
}
这里是在Ajax调用之前正确设置参数的证明。然后不知何故,一切都是空的
put index value to list items:实际上,就在ajax调用之前,当我调试时,所有参数都设置正确,这意味着所有列表都设置为要传递的对象。我进行了ajax调试,我注意到一些参数说cancelled=trued,那么将[FromBody]
属性添加到动作参数如何?将索引值放入列表项:实际上,就在ajax调用之前,当我调试时,所有参数都正确设置,这意味着所有列表都设置为要传递的对象。在进行ajax调试时,我注意到一些参数说cancelled=trued,那么将[FromBody]
属性添加到动作参数中呢?
<a title="Mettre à jour le type de financement" class="btn btn-primary btn-link btn-sm Edit" onclick="LoadUpdateForm(@counter)">
<i class="material-icons">edit</i>
</a>
function LoadUpdateForm(rowNumber) {
//les proprietes de base sont le libelle et le type
var idLibelleChamps = "#libelle_prop_" + rowNumber;
var libelle = $(idLibelleChamps).html();
var caracteristique = {};
caracteristique = proprietes.find(element => element.rang == rowNumber);
var dataToSend = {};
dataToSend.caracteristiqueToUpdate = caracteristique;
dataToSend.caracteristiques = proprietes;
debugger;
$.ajax
(
{
url: window.location.origin + "/ParametrageBiensFinanciers/AfficherFormulaireModifCaracteristique",
type: "post",
dataType: "json",
beforeSend: function (x) {
if (x && x.overrideMimeType) {
x.overrideMimeType("application/json;charset=UTF-8");
};
x.setRequestHeader('RequestVerificationToken', document.getElementById('RequestVerificationToken').value);
},
data: dataToSend,
complete: function (result) {
$("#AjouterCaracteristiques").html(result.responseText);
$(".selectpicker").selectpicker();
$("TypePropriete").change(function () {
targetType($(this));
});
var extendedProperty = $("#selectExtendId option:selected");
if ((typeof ($(extendedProperty)) != "undefined") && $(extendedProperty).text() != "Choisir la caractéristique dépendante") {
var dataToSend = {};
dataToSend.libelle = $(extendedProperty).text();
dataToSend.caracteristiques = proprietes;
dataToSend.caracteristiqueToUpdate = caracteristique;
$.ajax
(
{
url: window.location.origin + "/ParametrageBiensFinanciers/EtendreUneCaracteristique",
type: "post",
dataType: "json",
beforeSend: function (x) {
if (x && x.overrideMimeType) {
x.overrideMimeType("application/json;charset=UTF-8");
};
x.setRequestHeader('RequestVerificationToken', document.getElementById('RequestVerificationToken').value);
},
data: dataToSend,
complete: function (result) {
$("#checkExtendDiv").html(result.responseText);
$(".selectpicker").selectpicker();
}
}
);
}
$("#addPropertiesPane").show();
}
}
);
}