我试图在VB中反序列化一个集合,如下所示。
Dim items = JsonConvert.DeserializeAnonymousType(Page.Request.Params("Items"), New List(Of ItemDto))
反序列化存在问题,字符串“value”不能为null。
System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.ArgumentNullException: Value cannot be null.
Parameter name: value
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
“项目”集合存储在<asp:HiddenField runat="server" ClientIDMode="Static" ID="Items" />
中,转换为<input type="hidden"....>
但是,如果我在运行之前$("#Items').val(null);
没有项目然后它正常工作。
问题是,为什么$("#Items").val();
在我完成$("#Items").val(null);
之前和之后显示为“”并且是否存在无形差异?像零宽度空间?
我不知道为什么将集合设置为“null”使代码工作。
感谢。
答案 0 :(得分:1)
$("#Items").val();
永远不会返回NULL,因此返回空字符串
$("#Items').val(null);
它将值设置为&#34;&#34;或空字符串而不是空
因此不会抛出以下异常
System.Web.HttpUnhandledException' was thrown. ---> System.ArgumentNullException: Value cannot be null.
因为该值设置为&#34;&#34;通过您的JQuery而不是NULL因此不会引发ASP.NET异常