0

我将 JSON 对象传递回 C# aspx 页面 web 方法。

我的 JavaScript 看起来像:

 return jsonItem = {
                     id: id,
                     title:  title,
                     registrationPage: {
                        registration: registration                              
                     }                                                  
                   }

我将此项目传递给 aspx web 方法:

$.ajax({
          type: "POST",
          url: "SaveXML.aspx/SaveAs",
          data: JSON.stringify({ jsonItem : jsonItem }),
          contentType: "application/json; charset=utf-8",                
          dataType: "json",
          success: function (msg, textStatus) {
                alert(textStatus);
          },
    });

JSON 有效负载发送正常

在 aspx 页面中,我有以下课程:

public class JSONItem
{
    public string Id { get; set; }
    public string Title { get; set; }  
    public RegistrationPage RegistrationPage { get; set; }           
}

public class RegistrationPage
{
     public string Registration { get; set; }
}

[WebMethod]
public static Policy Save(Policy policy)
{
}

当我尝试构建它时,我得到一个代码分析错误,这是有道理的:

CA1034:Microsoft.Design:不要嵌套类型“SaveXML.RegistrationPage”。或者,更改其可访问性,使其在外部不可见。

如果我忽略该错误,则代码确实有效。我确实尝试更改修饰符,但未填充注册页面对象。

如何使代码正常工作并遵守上述错误?

谢谢

4

1 回答 1

0

通过 WebMethod 的本地化,看起来您已经嵌套在JSONItem类中。确切地说,您的代码如下所示:RegistrationPagePage

public partial class MyPage : System.Web.UI.Page
{
    ...

    public class JSONItem
    {
        public string Id { get; set; }
        public string Title { get; set; }  
        public RegistrationPage RegistrationPage { get; set; }           
    }

    public class RegistrationPage
    {
         public string Registration { get; set; }
    }

    [WebMethod]
    public static Policy Save(Policy policy)
    {
    }

    ...
}

您应该将这些课程移出Page课程(当然它们可以保留在同一个文件中):

public class JSONItem
{
    public string Id { get; set; }
    public string Title { get; set; }  
    public RegistrationPage RegistrationPage { get; set; }           
}

public class RegistrationPage
{
    public string Registration { get; set; }
}


public partial class MyPage : System.Web.UI.Page
{
    ...

    [WebMethod]
    public static Policy Save(Policy policy)
    {
    }

    ...
}
于 2012-11-23T12:01:29.083 回答