VB.NET 同页面两个date类型TextBox仅单个报输入字符串格式错误
问题根因
问题出在可空DateTime类型(DateTime?/Nullable
- 非可空的
DateTime类型原生支持带格式化参数的ToString(string format)重载,你给txtScadenza赋值的代码合法,输出的yyyy-MM-dd格式完全符合HTML5type=date输入框的赋值要求,所以能正常展示。 - 可空的
DateTime?类型本身没有带格式化参数的ToString重载,你直接调用Utente.dataScadenza.ToString("yyyy-MM-dd")属于非法方法调用,自然会触发格式错误。哪怕你确认该字段当前有值,只要没有先访问可空类型的Value属性拿到实际的DateTime结构体,就无法调用带格式的ToString方法。
修复方案
先判断可空日期是否有值,再通过Value属性访问实际的DateTime对象后格式化:
// 先做空值判断,避免空引用异常 if (Utente.dataScadenza.HasValue) { txtScadenzaDip.Text = Utente.dataScadenza.Value.ToString("yyyy-MM-dd"); } else { // 空值时的自定义处理,比如给控件赋空 txtScadenzaDip.Text = string.Empty; }
内容的提问来源于stack exchange,提问作者Gabriele Cozzolino
相关产品推荐
相关产品推荐

