VB.NET 错误的输入字符串格式错误仅出现在同一页面上两个控件的一个控件上

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 数据库上的 DateTime 字段。唯一的区别是 DataScadenza 是可为空的,而 Scadenza 不是。 我仅在 txtScadenzaDip 上收到标题中的错误,而 txtScadenza 以正确的格式显示日期……这让我发疯。收到错误消息时,我知道 DataScadenza 字段具有以下值:2021-09-17 00:00:00.000 请问是哪里出了问题?

我发现简单的 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")