如何在C#中反序列化在JQuery中序列化的东西?

时间:2012-12-07 15:52:13

标签: c# asp.net jquery serialization deserialization

我已经做了一段时间了,我正试图摆脱生锈。

我正在尝试使用VS2010在ASP.NET中设置AJAX结构。

我有一个类似于此的JQuery表单提交(为了示例目的而大大简化):

function FormSubmit () {
    $.post('SomeHandler.asmx/SomeFunction', 
        $("#form1").serialize(), 
        function(data) {some data handler}
    );
}

我的“SomeHandler.asmx / SomeFunction”是一个C#函数,它接收我的表单数据并对其进行处理。

据我所知,SomeHandler.asmx假设XML反序列化,但JQuery将其序列化为HTML编码字符串,而不是XML。

我想用一个类比,一方讲英语,但另一方希望听到法语。

我如何解决这个问题? (例如,假设我的表单有一个文本字段 - 我们称之为“txtField”,还有一个下拉列表 - 让我们称之为“lstDropDown”。)

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

在您的asmx文件中,请确保在接受并使用json响应的Web方法上使用以下属性标志:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string SomeWebMethod() 
{
  //blah
}

此外,请确保Web服务类具有以下属性标志:

[System.Web.Script.Services.ScriptService]
public class MyWebService : System.Web.Services.WebService
{
...
}

最后一件事:如果您在客户端序列化数据,则需要使用以下ajax设置:

 $.ajaxSetup({ contentType: "application/json; charset=utf-8" });