[英]How to properly structure C# nested classes to receive complex JSON
我将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”。 或者,更改其可访问性,以使其在外部不可见。
如果我忽略该错误,则代码可以正常工作。 我确实尝试过更改修饰符,但是没有填充Registration Page对象。
如何使代码正常工作并遵守上述错误?
谢谢
通过对WebMethod进行本地化,您似乎在Page
类中嵌套了JSONItem
和RegistrationPage
。 确切地说,您的代码如下所示:
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)
{
}
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.