我目前正在使用 ScriptService 属性启用对 Web 服务的 JSON 调用。问题是我的一个类引用了第二个类,而 .Net 没有为第二个类拾取并编写 JavaScript。
作为一种解决方法,我可以编写一个仅返回第二个类的虚拟方法。然后.Net 写入 JSON 以允许其序列化。所以在下面的例子中:
[ScriptService]
public class MyService : WebService {
[WebMethod]
public void SaveClass1(Class1 class1) {
...
}
}
[Serializable]
public class Class1 {
public Class2 class2 { get; set; }
}
[Serializable]
public class Class2 {
}
MyService.asmx/js 不会编写代码来允许我实例化 Class2 以便填充 Class1。但如果我添加以下内容,我就可以让它工作:
[WebMethod]
public Class2 Dummy() {
return new Class2();
}
到我的服务。任何替代我讨厌的解决方法的方法都将不胜感激。
最佳答案
您需要使用System.Web.Script.Services.GenerateScriptTypeAttribute ,它指定服务器类型应包含在生成的代理代码中。您可以将此属性应用于 Web 服务本身或任何标有 WebMethodAttribute 的方法。 .
例如:
[ScriptService]
[GenerateScriptType(typeof(Class2))]
public class MyService : WebService {
[WebMethod]
public void SaveClass1(Class1 class1) {
// ...
}
}
关于.net - 将特定 .net 对象公开为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/451420/