如何在 mvc 操作方法中传递复杂的 JSON object?
How to pass complex JSON object in mvc action method?
我有一种情况是从 ajax 调用中获取数据。我想调用一个动作方法并将数据作为参数传递。传递给操作方法的数据应映射到参数列表中的 object 属性。
这是我的 class,称为 FullQuestion。
public class FullQuestion : Question
{
public string Title { get; set; }
public string Content { get; set; }
public List<Tag> Tags { get; set; }
}
这是我的Ajax调用方法
var finalTagResultText = {Title: "title", Content: "content",Tag: { tagName: "tname", tagDescription: "tdesc"},Tag: { tagName: "tname1", tagDescription: "tdesc1"}};
$.ajax({
url: '@Url.Action("AskQuestion", "Dashboard")',
type: "POST",
data: JSON.stringify(finalTagResultText),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
window.location.href = "@Url.Action("Questions", "Dashboard")";
}
});
这是我的操作方法。
[HttpPost]
[ActionName("AskQuestion")]
public void AskQuestion_Post(FullQuestion question)
{
}
我想让 JSON object 作为 FullQuestion object 通过。我使用 json2 库来使用 stingify 方法。
我得到了标题和内容文本,但没有标签 object。
知道我该怎么做吗?提前致谢。
您的集合 属性 被命名为 Tags
(而不是 Tag
)并且由于它是一个集合,您需要传递一个 Tag
对象的数组,例如
var finalTagResultText = { .... , Tags: [{ tagName: "tname", tagDescription: "tdesc"}, { tagName: "tname1", tagDescription: "tdesc1"}]}`
旁注:您的 ajax 成功回调正在重定向到另一个页面,在这种情况下,请勿使用 ajax 提交您的数据。 ajax 的重点是保持在同一页面上。您最好只执行标准提交并在 POST 方法中使用 RedirectToAction()
。
您使用的JSON格式有误,使用正确的格式如下:
{"Title": "title", "Content": "content","Tag":[{ "tagName": "tname", "tagDescription": "tdesc"},{ "tagName": "tname1", "tagDescription": "tdesc1"}]}
为了验证您的 JSON 字符串,您可以使用下面的 link
https://jsonformatter.curiousconcept.com/
我有一种情况是从 ajax 调用中获取数据。我想调用一个动作方法并将数据作为参数传递。传递给操作方法的数据应映射到参数列表中的 object 属性。 这是我的 class,称为 FullQuestion。
public class FullQuestion : Question
{
public string Title { get; set; }
public string Content { get; set; }
public List<Tag> Tags { get; set; }
}
这是我的Ajax调用方法
var finalTagResultText = {Title: "title", Content: "content",Tag: { tagName: "tname", tagDescription: "tdesc"},Tag: { tagName: "tname1", tagDescription: "tdesc1"}};
$.ajax({
url: '@Url.Action("AskQuestion", "Dashboard")',
type: "POST",
data: JSON.stringify(finalTagResultText),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(result) {
window.location.href = "@Url.Action("Questions", "Dashboard")";
}
});
这是我的操作方法。
[HttpPost]
[ActionName("AskQuestion")]
public void AskQuestion_Post(FullQuestion question)
{
}
我想让 JSON object 作为 FullQuestion object 通过。我使用 json2 库来使用 stingify 方法。 我得到了标题和内容文本,但没有标签 object。 知道我该怎么做吗?提前致谢。
您的集合 属性 被命名为 Tags
(而不是 Tag
)并且由于它是一个集合,您需要传递一个 Tag
对象的数组,例如
var finalTagResultText = { .... , Tags: [{ tagName: "tname", tagDescription: "tdesc"}, { tagName: "tname1", tagDescription: "tdesc1"}]}`
旁注:您的 ajax 成功回调正在重定向到另一个页面,在这种情况下,请勿使用 ajax 提交您的数据。 ajax 的重点是保持在同一页面上。您最好只执行标准提交并在 POST 方法中使用 RedirectToAction()
。
您使用的JSON格式有误,使用正确的格式如下:
{"Title": "title", "Content": "content","Tag":[{ "tagName": "tname", "tagDescription": "tdesc"},{ "tagName": "tname1", "tagDescription": "tdesc1"}]}
为了验证您的 JSON 字符串,您可以使用下面的 link https://jsonformatter.curiousconcept.com/