如何在从 JavaScript 调用 Web 服务期间将“NULL”值传递到可空字段中 ASP.NET

How to pass "NULL" value into nullable field during call from JavaScript to ASP.NET WebService

本文关键字:值传 NET ASP 字段 NULL JavaScript 调用 Web 服务期      更新时间:2023-09-26

如何在从JavaScript调用WebService期间将"NULL"值传递到可空字段中 ASP.NET?

我从 JavaScript 中以以下方式调用方法:

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

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

null 不是 Int32 的有效值

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

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

欢迎任何想法!

附言以下是一些详细信息。

MyData重要部分的声明:

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

ASP.NET 网络服务的声明:

[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。 删除引号以使其成为实际的 null。

{"MyValue": null}

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

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