我有这个Ajax:
$.ajax({
url: "/api/Values",
dataType: "json",
type: "POST",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({
Id: "1", Name: "Name1", Family: "Family1"
}),
不,我想在控制器中获取data
,以便我可以将其保存到带有log4net的文本文件中。目前我已经写了这段代码:
public void PostValues(Class1 cs)
{
var data = $"Id = {cs.Id}, Name = {cs.Name}, Family = {cs.Family}";
Log.Debug($"POST Request, value = {data}");
}
使用模型绑定,我可以获得绑定到上面类属性的数据,然后像上面一样组合它们。但我不想这样使用,因为我必须经历所有类属性。有没有办法将数据作为JSON发布到控制器?我确信这应该是一种在控制器中获取以下行的方法:
Id: "1", Name: "Name1", Family: "Family1"
答案 0 :(得分:2)
您可以使用序列化程序将对象序列化为字符串版本。以下是JSON.NET
的使用方法public void Post(Class1 value)
{
var stringVersion = Newtonsoft.Json.JsonConvert.SerializeObject(value);
// use stringVersion now.
}
另一种选择是覆盖您班级中的ToString()
并根据需要使用它。您可以在ToString()
public class MyClass
{
public int Id { set; get; }
public string Name { set; get; }
public string Family{ set; get; }
public override String ToString()
{
return $"Id:{Id},Name:{Name}";
}
}
现在,您只需在MyClass对象上调用ToString()
即可。
public void Post(MyClass value)
{
if(value!=null)
{
var stringVersion = value.ToString();
}
}
答案 1 :(得分:0)
您可以使用JavaScriptSerializer
将类对象序列化为json对象,就像这样
var json = new JavaScriptSerializer().Serialize(cs);