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

时间:2014-04-01 02:52:26

标签: c# javascript json web-services

如何传递" NULL"从JavaScript调用到ASP.NET WebService期间,值是否为可以为空的字段?

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

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

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

  

null不是Int32的有效值

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

请告知:我做错了什么?如何通过' null'将被翻译的价值'进入NULL .NET对象?

欢迎任何想法!

P.S。以下是一些细节。

声明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)
    {...}
}

并且通过ScriptManager声明了ws_data:

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

1 个答案:

答案 0 :(得分:1)

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

{"MyValue": null}

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

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