asp.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 db 上的 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")
推荐阅读
- php - 隐藏输入中的值未传递给控制器
- sqlite - 如何使用表查看反应本机应用程序数据库
- azure - 在 Azure B2C 中使用 OpenId Connect 面临本地帐户用户的登录问题
- awk - 删除以最后一列作为参考的列
- visual-studio - 构建路径中的 Microsoft 多语言非法字符
- asp.net-mvc - 如何修复“在 ASP.NET MVC 中未处理的异常 IDENTITY_INSERT 设置为 OFF”?
- python - 矩阵的优化,每列的总和等于 1
- java - 需要具有动态值的正则表达式
- sql - 如何删除名称以 [ad] 开头的行
- javascript - 如何从表示嵌套树的物化路径数组中遍历和呈现嵌套 HTML?