【发布时间】:2016-02-25 04:15:00
【问题描述】:
嗯,它可以在 MVC 和 WebAPI 中完成。但是有没有办法更改 ASP.Net Web 窗体中的默认序列化程序?我们使用Newtonsoft.JSON 通过网络发送对象。它使用CamelCasePropertyName,所以C#中的FirstName在JSON中变成firstName。现在,当我们需要将对象传递回服务器以供 web methods 使用时,我们必须使用 FirstName 属性而不是 firstName 创建新对象,否则 ASP.Net 会抱怨并且请求失败。
我真诚地希望我缺少一些非常简单直接的东西。
编辑:- 好吧,通过实现类型的自定义转换或使用 Web 服务或 wcf 或迁移到 MVC/WebAPI 来克服这些问题,一切都很好。我们试图实现的是通过使用经典的页面方法(如果这样说的话)ASP.Net web-forms。
我一直在寻找某种方法来插入JSON.Net 序列化程序(Newtonsoft 之一)代替默认的JavaScriptSerializer,就像我们可以在MVC/WebAPI 堆栈中做的那样。
示例代码:
//class
public class Student
{
public string FirstName{get;set;}
}
//WebMethod in ASPX code-behind
[WebMethod]
public static string UpdateStudent(Student s)
{
//code to update object and send some response back.
}
主要问题
当从浏览器获取json格式的驼峰式数据时,默认JavaScriptSerialization无法处理属性名。
但如果我发送自定义对象,例如:
var o={FirstName:'John'};
有效!!!
【问题讨论】:
-
注意显示您的服务方法的示例签名?
-
@AlekseyNosik 当我使用
JSON.Net序列化对象时,它已经是帕斯卡大小写了。问题是当浏览器向PageMethod发送数据时,它无法正确地将属性从驼峰大小写转换为帕斯卡大小写。 -
@OndrejSvejdar 它是
PageMethod(或WebMethod)。我已经添加了示例代码。
标签: asp.net json webforms pagemethods