【发布时间】:2018-09-20 03:17:55
【问题描述】:
问题:
我正在尝试通过 jquery post 发送一个字符串数组,但它们没有被正确解析,我得到的只是列表中的空值。
javascript:
var array = [];
array.push("test")
array.push("test2")
array.push("tes3")
$.post("Admin/FilteredKeys", $.param(JSON.stringify({ Ids: array, OnlyActive: true }, true)));
C# 模型:
public class MySearch
{
public bool OnlyActive { get; set; } = true;
public List<string> Ids { get; set; }
}
控制器中的操作:
public async Task<IActionResult> FilteredKeys(MySearch filter)
{
var data = await _service.GetFilteredKeyTypes(filter);
return View();
}
我用谷歌搜索,发现传统属性需要设置为 true,但它保持不变,我也尝试了这个 sn-p:
$.ajax({
type: "POST",
url: "Admin/FilteredKeys",
data: postData,
success: function(data){
alert(data.Result);
},
dataType: "json",
traditional: true
});
这是一个 .net 核心项目,我需要在某处更改其他参数吗?
编辑:
忘了补充一下,我最初的尝试是这样的:
$.Admin.worker.postJson("Admin/FilteredKeys", JSON.stringify({ Ids: array, OnlyActive: true }), function (data) {
var t = "";
});
postJson: function (url, data, callback) {
$.LoadingOverlay("show");
$.ajax({
url: url,
type: 'POST',
data: data,
contentType: 'application/json; charset=utf-8',
success: function (data) {
if (callback)
callback(data);
$.LoadingOverlay("hide");
},
error: function (event, jqxhr, settings, thrownError) {
//$.helpers.errorHandler($("#fileDialogErrors"), event.responseText);
$.LoadingOverlay("hide");
}
});
}
【问题讨论】:
-
没有对其进行测试,但我建议在 ajax 中使用
data: { filter : postData },因为我遇到并解决了类似的问题。 -
我偷偷摸摸的怀疑与您参数化字符串对象的位置有关:
$.param(JSON.stringify({ Ids: array, OnlyActive: true }。您是否只是尝试将对象本身作为发布数据发布?例如{ Ids: array, OnlyActive: true }
标签: c# jquery .net asp.net-core-mvc