首页 > 解决方案 > VB.NET Wrong input string format error only on one control of two on the same page

问题描述

我有 2 个使用 type=date 参数的文本框,显示日期如 dd/MM/yyyy

<asp:TextBox Type="date" runat="server" ID="txtScadenza" name="txtScadenza" placeholder="Scadenza" required="required" AutoPostBack="true" class="form-control input-md"></asp:TextBox>
<asp:TextBox Type="date" runat="server" ID="txtScadenzaDip" name="txtScadenzaDip" placeholder="Scadenza" AutoPostBack="false" class="form-control input-md" ></asp:TextBox>

这些文本框收到带有此代码的日期:

txtScadenza.Text = Cliente.Scadenza.ToString("yyyy-MM-dd")
txtScadenzaDip.Text = Utente.dataScadenza.ToString("yyyy-MM-dd")

Scadenza 和 DataScadenza 这两个字段都是 SQL db 上的 DateTime 字段。唯一的区别是 DataScadenza 是可以为空的,而 Scadenza 不是。我只在 txtScadenzaDip 上收到标题中的错误,而是 txtScadenza 以正确的格式显示日期......这让我发疯了。收到错误时,我知道 DataScadenza 字段有这个值:2021-09-17 00:00:00.000 请问问题出在哪里?

标签: asp.netvb.netdatetimedate-formatting

解决方案


我发现一个简单的 DateTime 对象和一个 Nullable DateTime 对象之间有很大的不同,这里我需要做些什么来使它工作:

Dim dataScadenza As DateTime
If Utente.dataScadenza.HasValue Then
   dataScadenza = Utente.dataScadenza
   txtScadenzaDip.Text = dataScadenza.ToString("yyyy-MM-dd")
End If

编辑正如 jmcilhinney 所指出的,还有另一个更简单的解决方案,使用 ? 操作员:

txtScadenzaDip.Text = Utente.dataScadenza?.ToString("yyyy-MM-dd")

推荐阅读