如何传递" 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>
答案 0 :(得分:1)
这是因为您传递了字符串null而不是非值null。删除引号以使其成为实际的空值。
{"MyValue": null}
我也不确定你的eval
,我认为它可以省略,因为eval
应该把字符串解释为JavaScript。
ws_data.SaveTasks({"MyValue": null}, OnSaveComplete, OnError, OnTimeOut);