C# 将 json 字符串等到 “”String“”
本文关键字:String json 字符串 | 更新日期: 2023-09-27 18:36:26
我们有 2 个 mvc 应用程序当我们使用 ajax 调用将 JSON 数据从视图发送到控制器时。
(控制器和视图的代码 100% 相同)
var JsonData = {"Name" : "Jon Jonssen", "Foo": "test", "Date": new Date(2010,02,02)}
$.ajax({
type: 'POST',
url: "@Url.Action("TestJson")",
data: JsonData,
success: function(data) { alert('data: ' + JSON.stringify(data)); },
contentType: "application/json",
dataType: 'json'
});
型:
public string Name { get; set; }
public string Foo { get; set; }
public DateTime Date { get; set; }
控制器:
public ActionResult TestJson(JsonModel JsonModel)
应用程序 1 获取对象,如下所示:
Name = "Jan Janssen"
Foo = "test"
Date = 2-2-2010 00:00:00
应用程序 2 获取以下内容:
Name = "'"Jan Janssen'""
Foo = "'"test'""
Date = 1-1-0001 00:00:00
我们似乎找不到任何区别。任何帮助都会很好。
替换:
data: JsonData
跟:
data: JSON.stringify(JsonData)
您需要这样做的原因是您在 HTTP 请求中指定了contentType: "application/json"
,因此您必须遵守此设置并发送 JSON。
此外,如果您正确地将响应Content-Type
标头设置为 application/json
(如果您从控制器操作返回 JsonResult 时,则会在幕后发生),则无需显式指定dataType: 'json'
。 jQuery将自动从标头推断这一点。