返回列表从C#方法到JavaScript PageMethods

问题描述 投票:0回答:1

我在从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!");
     }
}

如何更改它以便能够返回对象列表?

javascript c# pagemethods
1个回答
0
投票

通过@DavidTansey的建议解决了

只需将以下内容添加到web.config文件中,详细here

<configuration> 
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="2147483644"/>
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration>
© www.soinside.com 2019 - 2024. All rights reserved.