gpt4 book ai didi

jquery - 如何将包括列表在内的复杂对象发布到 ASP Web Api 2

转载 作者:行者123 更新时间:2023-12-01 04:39:30 25 4
gpt4 key购买 nike

我试图通过 jquery ajax 调用发布一个包含多个字符串列表/数组的复杂对象。似乎只有对象的标量属性被映射,而不是数组。

我已经进行了一些搜索,但找不到针对这种情况的任何示例或解决方案。

网络API方法:

[HttpPost]
public IHttpActionResult Save(MenuSearchGuideEntry model)
{
//Do stuff
return Ok("");
}

MenuSearchGuideEntry 对象:

[Table("MENUSOEGNING_GUIDE")]
public class MenuSearchGuideEntry
{
[Key]
[Column("RAEKKEID")]
[Display(Name="Række id")]
public Decimal RowId { get; set; }

[Display(Name = "Label id")]
[Column("LABELID")]
public int? LabelId { get; set; }

[Column("ACTION")]
[Display(Name = "Action")]
public string JsonAction { get; set; }

[Column("FORCESEARCH")]
[Display(Name = "Tving søgning")]
public bool ForceSearch { get; set; }

[Column("ORD")]
[Display(Name = "Søgeord")]
public string SearchKeysString { get; protected set; }
public List<string> SearchKeys
{
get
{
return ToStringList(SearchKeysString, ' ');
}
set
{
SearchKeysString = value.Aggregate<string>((a, b) => a + " " + b);
}
}


[Column("SKJULTEFIRMAER")]
[Display(Name = "Skjulte firmaer")]
public string HiddenCompaniesString { get; protected set; }
public List<string> HiddenCompanies
{
get
{
return ToStringList(HiddenCompaniesString, ' ');
}
set
{
HiddenCompaniesString = value.Aggregate<string>((a, b) => a + " " + b);
}
}
[Column("SKJULTEDOMAENER")]
[Display(Name = "Skjulte domæner")]
public string HiddenDomainsString { get; protected set; }
public List<string> HiddenDomains
{
get
{
return ToStringList(HiddenDomainsString, ' ');
}
set
{
HiddenDomainsString = value.Aggregate<string>((a, b) => a + " " + b);
}
}
[Column("PRIORITET")]
[Display(Name = "Prioritet")]
public int? Priority { get; set; }


private List<string> ToStringList(string separatedString, char separator)
{
return string.IsNullOrEmpty(separatedString)
? new List<string>()
: eparatedString.Split(separator).ToList();
}
}

Jquery Ajax 调用:

function ajaxPost(data, url, redierctUrl) {
$.ajax({
url: url,
data: JSON.stringify(data),
type: 'POST',
contentType: 'application/json',
success: function () {
window.location.href = redierctUrl;
},
error: function (msg) {

}
});
}

通过 Ajax 发布的对象:

{
"RowId":"1920",
"priority":"",
"labelId":"9999",
"forcesSearch":"False",
"jsonAction":"KBA TEST",
"SearchKeys":["ZZZ","YYY","XXX"],
"HiddenDomains":["VAU","THG","MEK",""],
"HiddenCompanies":["MGM"]
}

最佳答案

我已经尝试过这个了。我相信正在发生的事情是Wep Api使用 getter List<string>的属性(获取一个新的空列表),然后将字符串添加到列表中。一次Web Api将字符串添加到列表中后,列表将不再有引用,并会被垃圾收集。 setter似乎没有被调用。

如果您不想更改模型以实际拥有真实的 List<string>成员(member),那么您可以通过返回 null 来解决这个问题而不是new List<string>来自ToStringList方法。然后,当 Web API使用 getter 并获取 null,稍后会调用 setter。

不过,我认为您最好存储 SearchKeys真实等List<string>类中的成员,然后有一个属性,该属性以空格分隔的单词形式返回列表的内容:

[Column("ORD")]
[Display(Name = "Søgeord")]
public string SearchKeysString { get { return SearchKeys.Aggregate<string>((a, b) => a + " " + b); } }
public List<string> SearchKeys { get; set; }

关于jquery - 如何将包括列表在内的复杂对象发布到 ASP Web Api 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42000210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com