我将JSON对象传递回C#aspx页面web方法。
我的JavaScript看起来像:
return jsonItem = {
id: id,
title: title,
registrationPage: {
registration: registration
}
}
我将此项目传递给aspx网络方法:
$.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”。或者,更改其可访问性,使其不在外部可见。
如果我忽略错误,代码确实有效。我确实尝试更改修改器,但未填充注册页面对象。
如何让代码工作并遵守上述错误?
由于
答案 0 :(得分:0)
通过WebMethod的本地化,您似乎已在JSONItem
类中嵌套了RegistrationPage
和Page
。确切地说,您的代码如下所示:
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)
{
}
...
}