ASMX WebService/序列化:如何强制__type"属性要包含在javascript中
ASMX WebService/Serialization: How to force " __type" property to be included in javascript
我正在使用asmx webservices,并通过它们序列化/反序列化大量数据,用于我正在研究的JSON管理面板。
当信息被加载时,我调用一个webservice来加载一个User[]数组到javascript中。但是,我有大约25个User的子类,它们有自己独特的属性,实际上是通过这个webservice调用加载的。这样加载它们似乎可以很好地工作,但是保存有一些问题。
保存方法接受一个User[]数组来保存。在大多数子类中,javascript中没有__type提示,反序列化失败。对于具有__type属性的类,它似乎工作得很好。
我的问题是。我怎么能强制__type被包含在javascript对象序列化?
这是我的c#调用来加载对象(简化了一点),以防万一你需要它:
[WebMethod(EnableSession = true)]
public User[] GetUsersInGroup(int UserGroupID)
{
List<User> UsersInGroup = User.GetUsersInGroup(UserGroupID);
return UsersInGroup.ToArray();
}
这里是保存方法:
[WebMethod(EnableSession = true)]
public void SaveUsers(User[] Users)
{
foreach (User CurUser in Users)
{
CurUser.Save();
}
}
服务头:
[ScriptService]
public class FormFields : System.Web.Services.WebService
{
JSON(简化)注释显示了没有的内容:
{
"d": [
{
"__type": "Tools.User.AccountingUser", /* This is missing */
"UserID": 3934,
"HasQBAccess": true
},
{
"__type": "Tools.User.PowerUser",
"UserID": 3937,
"AccessDB": true,
"AccessFTP": true
}
]
}
为了得到某种有效的答案,即使它不是一个好答案。
到目前为止,我能找到的最好的答案是在我的webservice中添加一个很长很丑的函数定义。我不需要调用它,只是让它在那里让c#识别类型:[WebMethod(EnableSession = true)]
public void ThisMethodSucks(AccountingUser u1, PowerUser u2, AdminUser u3, DatabaseUser u4, ADAdministratorUser u5, PSUser u6, NUTUser u7, TechUser u8, ...[all classes here])
{
//this method never needs to get called, just sits here.
}
相关文章:
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 在循环中包含特定属性
- JavaScript选择器:查找包含具有特定属性的子体的节点
- 访问键中包含空格的嵌套属性
- 使用 Chai - 如何检查对象属性是否包含 DOM 元素
- 在包含带有jquery或js的html的变量中禁用change属性
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- Javascript:如何制作一个包含4个具有相同属性的对象的数组
- 句柄中包含括号的问题处理属性
- 替换对象's属性,其中包含JavaScript中另一个对象的属性,不包含库
- Javascript函数'的属性,该属性包含其代码
- AngularJS在指令中包含HTML属性
- jQuery 选择
,自定义属性包含“:” - 属性包含选择器 * 替代
- 获取其子属性包含值的对象
- 如何使用jQuery'检查连字符后的内容;s”;属性包含前缀选择器”;
- 属性包含返回空数组的单词选择器
- 我怎样才能得到每一个"标签which "href"属性包含单词"youtube&
- 击倒“;如果viewModel属性包含'一些文本'&”;
- 属性包含使用change的选择器[name*= " value "]