我试图将对象数组传递到使用jQuery的ajax()函数的asp.net核心控制器方法。当我输入exporttocsv() c#控制器方法时,参数"data"是零。我已经尝试过使用List类型的参数,但这也不起作用。我做错了什么?
//模型= [{"grantNumber"1 r01md018293-01"award" 731899,"awardCode"R01"awardDate"2023 - 03 - 18 - t12:03:00"startDate"2023 - 03 - 18 - t00:00:00"endDate"2027 - 11 - 30 - t12:11:00"fiscalYear" 2023,项目名称;表观遗传老化;项目摘要;;同义词典;37周妊娠;加速;地址;;组织机构;佛罗里达中央大学;"department"NONE"地址:美国佛罗里达州奥兰多-328263231;"city"ORLANDO"state"FL"zip"328263231",国家&;;美国&;;"contactFirstName"CARMEN"contactLastName"GIURGESCU"教授,副院长,负责研究;"contactEmail"","phone"","fax"","awardType"1","kw"","hits" 0,"labUrl";"},
{"grantNumber"1 r01ai168182-01a1"award" 759454,"awardCode"R01"awardDate"2023 - 03 - 17 - t12:03:00"startDate"2023 - 03 - 17 - t00:00:00"endDate"2028 - 02 - 29 - t12:02:00"fiscalYear" 2023,鼻微生物组对宿主呼吸道病毒易感性和应答的影响;项目摘要;;"thesaurus"2019 - ncov;"组织";乔治华盛顿大学"部门&;;公共卫生&;PREV MEDICINE"地址:美国华盛顿特区-200520042;"city"WASHINGTON"state"DC"zip"200520042",国家&;;美国&;;"contactFirstName"CINDY"contactLastName"LIU"contactTitle"助理研究教授"contactEmail"","phone"","fax"","awardType"1","kw"","hits" 0,"labUrl";"})
<script type="text/javascript">
function check() {
debugger
var model = @Html.Raw(Json.Serialize(@ViewBag.alldata));
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
url: "/Home/exporttocsv",
data: { "data": JSON.stringify(model) },
type: 'POST',
success: function (data) {
location.href = '@Url.Action("DownloadCSV", "Home")?success=' + data;
}
});
};
</script>
public class HomeController: Controller
{
[HttpPost]
public string exporttocsv(List<ShowNihSearchData> data)
{
// do stuff with data here...
}
}
存在模型绑定不匹配。"exporttocsv"Action需要一个对象列表。你给它发送一个带有键model的对象,它有一个字符串值它是一个对象列表(或者别的什么,我不知道是什么ViewBag。alldata包含)。您还首先使用JSON将模型串化为JSON,然后再使用JSON。第二次将字符串化,这可能是您想要的,也可能不是。
信息的结构两边必须匹配。
如果你的ShowNihSearchData
是正确的,ajax与下面的代码将工作。
<script type="text/javascript">
function check() {
debugger
var model = @Html.Raw(Json.Serialize(@ViewBag.alldata));
$.ajax({
url: "/Home/exporttocsv",
data: { "data": model },
type: 'POST',
success: function (data) {
location.href = '@Url.Action("DownloadCSV", "Home")?success=' + data;
}
});
};
</script>
<script type="text/javascript">
function check() {
debugger
var model = @Html.Raw(Json.Serialize(@ViewBag.alldata));
var modeldata= JSON.stringify(model);
$.ajax({
ContentType: 'application/json; charset=utf-8',
dataType: 'json',
url: "/Home/exporttocsv",
data: { "data": modeldata },
type: 'POST',
success: function (data) {
debugger;
console.log(data);
location.href = '@Url.Action("DownloadCSV", "Home")?success=' + data;
}
});
</script>
public class HomeController: Controller
{
[HttpPost]
public string exporttocsv(string data)
{
List<ShowNihSearchData> model = JsonConvert.DeserializeObject<List<ShowNihSearchData>>(data);
}
}
在我将List<ShowNihSearchData>
更改为字符串