所以我有一个保存“链接”对象的rest API。现在用于添加“链接”对象的其余API一次一个地绑定到模型,但是当它传递的“链接”对象数组时它不绑定字符串列表。我已经尝试使用包含链接列表和链接[]的模型。
模型就是这个
public class Link
{
[JsonProperty(PropertyName = "name")]
public string name { get; set; }
[JsonProperty(PropertyName = "fields")]
public List<string> fields { get; set; }
[JsonProperty(PropertyName = "imgPath")]
public string imgPath { get; set; }
[JsonProperty(PropertyName = "category")]
public string category { get; set; }
}
控制器中的功能是
public string PostLinkList([FromBody] List<Link> links)
{
string json;
bool waiting = true;
int timeWaiting = 0;
do
{
try
{
using (StreamWriter outfile = new StreamWriter("App_Data/linkObjs.txt", false))
{
for (int i = 0; i < links.Length; i++)
{
json = JsonConvert.SerializeObject(links[i]);
outfile.Write(json + "\n");
}
}
waiting = false;
}
catch (Exception e)
{
timeWaiting++;
if (timeWaiting > 20)
{
waiting = false;
}
}
} while (waiting);
return JsonConvert.SerializeObject(links);
}
前端看起来像这样
$(".category").each(function ()
{
var tag = $(this).attr("id");
var category = $(this).find(".issueTitle").children("span").text();
$("#" + tag + " button").each(function ()
{
var imgPath = $(this).children("i").attr("class");
var fields = $(this).attr("name").split(",");
var name = $(this).children("p").children("span").text();
links[i] = {
name: name,
fields: fields,
imgPath: imgPath,
category: category
};
i++;
});
});
$.ajax(
{
url: "/api/Link",
type: "Post",
async: false,
contentType:"application/json",
dataType: "json",
data: links,
success: function () { populate(); },
error: function () { alert("failed to populate"); }
});
Hes什么,作为字符串,格式看起来像/这是传递给后端的字符串
"[
{\"name\":\"test name\",
\"fields\":[\"field\",\"details\"],
\"imgPath\":\"optImg icon-print\",
\"category\":\"test\"},
{\"name\":\"test name\",
\"fields\":[\"field\",\"details\"],
\"imgPath\":\"optImg icon-print\",
\"category\":\"test\"},
{\"name\":\"test name\",
\"fields\":[\"field\",\"details\"],
\"imgPath\":\"optImg icon-print\",
\"category\":\"test\"}
]"
答案 0 :(得分:0)
好的,找到了修复它的东西。我不得不创建一个新的虚拟目录,因为更新的代码没有运行。比JSON.strigify发送链接到后端有一个Link []没有列表修复所有问题谢谢你们的帮助。对不起,如果我浪费你的时间。
答案 1 :(得分:0)
在进行jquery Ajax调用时,您需要指定并使用 json.stringify
来序列化json对象。