C# 在控制器中以JSON的形式获取数据
我有一个Ajax:C# 在控制器中以JSON的形式获取数据,c#,json,C#,Json,我有一个Ajax: $.ajax({ url: "/api/Values", dataType: "json", type: "POST", contentType: 'application/json; charset=utf-8', data: JSON.stringify({ Id: "1", Name: "Name1", Family: "Family1" }), 不
$.ajax({
url: "/api/Values",
dataType: "json",
type: "POST",
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({
Id: "1", Name: "Name1", Family: "Family1"
}),
不,我想在控制器中获取数据
,以便使用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"
可以使用序列化程序将对象序列化为字符串版本。以下是您将如何使用 另一个选项是重写类中的
ToString()
,并根据需要使用它。您可以在ToString()返回的字符串中包含相关的属性值
现在,您只需在MyClass对象上调用ToString()
public void Post(MyClass value)
{
if(value!=null)
{
var stringVersion = value.ToString();
}
}
可以使用序列化程序将对象序列化为字符串版本。以下是您将如何使用 另一个选项是重写类中的
ToString()
,并根据需要使用它。您可以在ToString()返回的字符串中包含相关的属性值
现在,您只需在MyClass对象上调用ToString()
public void Post(MyClass value)
{
if(value!=null)
{
var stringVersion = value.ToString();
}
}
您可以使用
JavaScriptSerializer
将类对象序列化为json对象,如下所示
var json = new JavaScriptSerializer().Serialize(cs);
您可以使用
JavaScriptSerializer
将类对象序列化为json对象,如下所示
var json = new JavaScriptSerializer().Serialize(cs);
为什么要反序列化然后序列化json。必须有一种从请求中读取json的方法。(在WCF中是可能的,但我没有使用webapi)@LB,
Request.InputStream
提供控制器中的原始数据。在它之外,您可以使用HttpContext.Current.Request.InputStream
获取原始数据。但是,除了日志记录之外,可能还会对该数据进行其他处理,将其作为模型对象接受是正确的方法。@JasonP,除非您使用web api,否则您不需要该属性。@JasonP[FromBody]
不需要它工作。我刚刚从答案中删除了它。@MatJ在web api中它也可以工作。为什么要使用它?为什么要反序列化然后序列化json。必须有一种从请求中读取json的方法。(在WCF中是可能的,但我没有使用webapi)@LB,Request.InputStream
提供控制器中的原始数据。在它之外,您可以使用HttpContext.Current.Request.InputStream
获取原始数据。但是,除了日志记录之外,可能还会对该数据进行其他处理,将其作为模型对象接受是正确的方法。@JasonP,除非您使用web api,否则您不需要该属性。@JasonP[FromBody]
不需要它工作。我刚刚从答案中删除了它。@MatJ在web api中它也可以工作。我为什么要用它?