【问题标题】:How to pass "NULL" value into nullable field during call from JavaScript to ASP.NET WebService如何在从 JavaScript 调用到 ASP.NET WebService 期间将“NULL”值传递给可为空的字段
【发布时间】:2014-04-01 02:52:25
【问题描述】:

在从 JavaScript 调用 ASP.NET WebService 期间如何将“NULL”值传递给可为空的字段?

我通过以下方式从 JavaScript 调用方法:

ws_data.SaveTasks(eval({"MyValue":"null"}), OnSaveComplete, OnError, OnTimeOut);

当我这样做时,我收到一个错误(框架调用 OnError):

null 不是 Int32 的有效值

如果我传递有效整数而不是“null” - 一切正常。

请指教:我做错了什么?如何传递将被“翻译”为 NULL .NET 对象的“null”值?

欢迎提出任何想法!

附:以下是一些细节。

MyData 重要部分的声明:

public class MyData
{
    ...
    public int? MyValue { get; set; }
}

ASP.NET Web 服务声明:

[WebService(Namespace = "...")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class ws_data : WebService
{
    [WebMethod(true)]
    public object SaveData(MyData data)
    {...}
}

而 ws_data 是通过 ScriptManager 声明的:

    <asp:ScriptManager runat="server">
        <Services>
            <asp:ServiceReference Path="/ws_data.asmx" />
        </Services>
    </asp:ScriptManager>

【问题讨论】:

  • 你有没有试图不通过任何东西?
  • 传递null,而不是字符串"null"
  • 如果它是 Nullable 为什么你还要传递任何东西?
  • 我没有试图不通过任何东西......看起来这是一个想法。但我更喜欢显式声明。感谢您的建议。

标签: c# javascript json web-services


【解决方案1】:

这是因为您传递的是字符串 null 而不是非值 null。删除引号使其成为实际的空值。

{"MyValue": null}

我也不确定你的 eval,我认为它可以省略,因为 eval 应该将字符串解释为 JavaScript。

ws_data.SaveTasks({"MyValue": null}, OnSaveComplete, OnError, OnTimeOut);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-28
    • 2015-10-18
    • 2019-08-27
    • 2017-03-21
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多