【发布时间】:2012-10-05 01:01:48
【问题描述】:
我有一个愚蠢的问题。我正在使用 ASP .NET MVC 4、EF5 和 Ext JS (Sencha) 开发一个 Web 应用程序。
问题是,按照设计(我不知道为什么),Ext JS 在执行 ajax 请求时会将具有空值的 js 对象转换为空字符串。
为了方便起见,我将过度简化示例。
如果我在 JavaScript 中有一个变量
icon_id : null
当我得到 JObject 服务器端时,它变成了
icon_id : ""
当我将icon_id 作为请求的参数传递时。所以当我写icon_id.ToObject<MyNETIconIDClass>() 时,我得到一个异常,告诉我它不能从字符串转换为可为空的int。这是可以理解的。
我可能误解了这背后的逻辑,但由于我不想弄乱 Ext JS 源代码,有什么办法可以告诉 Json.NET 反序列化器将空字符串视为 null 吗?
据我所知,使用转换器会很麻烦,因为我必须更改模型中每个类中的每个可为空的 int 属性才能使这项工作正常进行。
【问题讨论】:
-
你是如何将它传递给服务器的? Ext 不会(或者当然不应该)将其转换为任何空字符串。
-
请查看此链接:sencha.com/forum/…。这似乎是发生在我身上的事情。我尝试在
params中传递一个可为空的 int,当结果为 null 时,我在尝试反序列化时遇到异常。 -
所以这是一个获取请求?在这种情况下,Ext 并没有做任何不良的事情,没有真正的方法来表示 null 和 '' 之间的区别。
-
天哪,我没注意到!我将
params替换为jsonData以将其标识为发布请求并且它有效。如果您将您的评论作为答案,我可以接受您的回答;)
标签: serialization extjs json.net