隐藏输入“空字符串”vs“空”Javascript,VB

时间:2017-03-01 13:37:15

标签: javascript asp.net vb.net invisible

我试图在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”使代码工作。

感谢。

1 个答案:

答案 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异常