gpt4 book ai didi

asp.net - 将字典的字典传递给 javascript (.NET)

转载 作者:行者123 更新时间:2023-11-30 10:56:50 24 4
gpt4 key购买 nike

我试图解决通过 SOAP 网络服务将二维表传递到 JavaScript AJAX 应用程序的问题。我正在尝试通过使用以下属性声明的 ASP.NET Web 服务将数据传递到 JavaScript 网页:

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]

我需要将复杂类型传递给 JavaScript:

[Serializable]
public class PayRateSummary
{
public string[] EmployeeId;
public Dictionary<string, string> EmployeeName;
public string[] PaycodeId;
public Dictionary<string, Dictionary<string, double?>> EmployeePaycodeRate;
}

[WebMethod(EnableSession = true)]
public DataElements.PayRateSummary EnumPayRates(Guid companyId)
{
}

Web 服务以非常标准的方式声明:

    <asp:ScriptManager runat="server" ID="ScriptManager1">
<Services><asp:ServiceReference Path="~/WebService.asmx" /></Services>
</asp:ScriptManager>

... 函数 RefreshPayRates() { WebService.EnumPayRates(CompanyCurrent, OnPayRatesLoaded, OnFailure);

出于某种原因,Dictionary[string,string] 正常通过,但 Dictionary[string,Dictionary[string,string]] 没有通过:

--> http://vvcap.net/db/8rveoL-FMP6EUikCaqiz.htp

我记得过去曾用头撞墙来理解,可以做些什么来传递这样的对象,但从未找到任何解决方案。

最佳答案

基于 sktrdie的答案,您可以使用 ASP.NET AJAX JSON Web 服务将数据作为 JSON 对象传递和返回。这里有一些例子-

这个问题中有很多关于 JSON 的好信息 - What is JSON and why would I use it?

编辑 -

此刻,你说你正在使用 SOAP ,这是一种基于 XML 的传输协议(protocol)。这里有一篇非常简洁的文章 - Extending an existing ASP.NET Web Service to support JSON - 解释了如何扩展现有的网络服务,

此外,如果您无法访问 .NET 3.5 JSON 序列化器/反序列化器,请查看 James Newton King's JSON.NET library .

编辑 2 -

再次查看您的屏幕截图以及您具有 [ScriptService] 属性的事实,您似乎正在返回一个 JSON 字符串(我知道这是默认值)。因此,我在想是 ASP.NET AJAX JSON 序列化程序未能序列化此行中的可为空的 double 值

public Dictionary<string, Dictionary<string, double?>> EmployeePaycodeRate;

每个实例中的正确 JSON 数据类型?您可以通过更改 Web 服务以返回 double 值来查看是否属于这种情况,然后尝试使用具有值的数据。

根据 MSDN -

Nullable types are also supported and map to JSON in the same way as non-nullable types.

尽管如此,我认为值得以与我建议的方式类似的方式进行研究,因为这就是您的问题所在

希望对你有帮助

编辑 3 -

为什么不能用 JSON 字符串表示具有字典值的字典似乎很奇怪。考虑一个字典在 JSON 中看起来像这样

[{"Key":"a1","Value":"a1"},
{"Key":"a2","Value":"a2"}]

具有字典值的字典因此看起来像这样(我相信)

[{"Key":"a1","Value": {"Key":"b1","Value":"b1"} },
{"Key":"a2","Value": {"Key":"b2","Value":"b2"} }]

根据 JSONLint - the JSON validator 这是有效的 JSON .

关于asp.net - 将字典的字典传递给 javascript (.NET),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/411896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com