我在从ASP.net ASPX网页上的JavaScript中的PageMethods调用返回对象列表时遇到问题。
在C#方法中,如果我返回一个对象,则可以被JavaScript读取,但是,如果我返回对象的列表,它将返回500错误。
下面是返回单个对象的示例,该方法有效。
C#
[WebMethod]
public static Project SingleObject()
{
Project obj = new Project("Thing 1", 10, 10, "Thing 2", new List<string>() { "Thing 3", "Thing 4" }, "thing 5", new List<string>() { "Thing 6", "Thing 7" }, "Thing 8", new List<string>() { "Thing 9", "Thing 10" });
return obj;
}
JavaScript的
function getObject()
{
var object = PageMethods.GetData(onSuccess, onFailed);
function onSuccess(data)
{
console.log(data.thing1);
}
function onFailed(result)
{
console.log("Request Failed!");
}
}
现在,如果我更改C#方法以返回List<Project>
而不是单个对象,它将在chrome Web控制台中返回500错误。
下面的例子。
C#
[WebMethod]
public static List<Project> MulitpleObjects()
{
Project obj1 = new Project("Thing 1", 10, 10, "Thing 2", new List<string>() { "Thing 3", "Thing 4" }, "thing 5", new List<string>() { "Thing 6", "Thing 7" }, "Thing 8", new List<string>() { "Thing 9", "Thing 10" });
Project obj2 = new Project("Thing 1", 10, 10, "Thing 2", new List<string>() { "Thing 3", "Thing 4" }, "thing 5", new List<string>() { "Thing 6", "Thing 7" }, "Thing 8", new List<string>() { "Thing 9", "Thing 10" });
Project obj3 = new Project("Thing 1", 10, 10, "Thing 2", new List<string>() { "Thing 3", "Thing 4" }, "thing 5", new List<string>() { "Thing 6", "Thing 7" }, "Thing 8", new List<string>() { "Thing 9", "Thing 10" });
List<Project> objects = new List<Project>() { obj1, obj2, obj3 };
return objects;
}
JavaScript的
function getObjects()
{
var objects = PageMethods.GetData(onSuccess, onFailed);
function onSuccess(data)
{
console.log(data[0].thing1);
}
function onFailed(result)
{
console.log("Request Failed!");
}
}
如何更改它以便能够返回对象列表?
通过@DavidTansey的建议解决了
只需将以下内容添加到web.config文件中,详细here
<configuration>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="2147483644"/>
</webServices>
</scripting>
</system.web.extensions>
</configuration>