Blazor C#日期显示为1/1/0001 12:00:00Am

问题描述

我对Blazor完全陌生,并且刚刚进入一个项目。

我正在使用ORM从数据库提取数据。由于某种原因,当我返回数据时,它显示为1/1/0001 12:00:00Am

这就是我从数据库获取数据的方式

string sql = "Select top Value1,Value2,Value_DateTime from DBO.T_1";
return _db.LoadData<Model1,dynamic>(sql,new { });

这就是我尝试在.Razor页面中用值填充表的方式

<td>@Value.Value_DateTime</td>

所有其他数据正确显示。当我在SSMS中运行查询时,它会正确显示日期。

编辑:

 Task<List<T>> LoadData<T,U>(string sql,U parameters);

解决方法

问题可能是SQL DateTime数据类型和C#System.DateTime结构之间的不兼容。还有一个替代版本:System.Data.SqlTypes.SqlDateTime结构-在您的模型中切换到该结构应该™可以解决您的问题。

这是文档链接:https://docs.microsoft.com/en-us/dotnet/api/system.data.sqltypes.sqldatetime?view=dotnet-plat-ext-3.1

相关摘录:

... SqlDateTime结构与其相应的.NET Framework类型DateTime ...具有不同的基础数据结构。

,

Blazor C#日期显示为1/1/0001 12:00:00Am

您正在显示尚未初始化的DateTime。在代码中的某个位置,您只是没有将数据从数据库移到随后显示的字段中。令人遗憾的是,您的代码是如此的非标准,我不会对其进行调试-尤其是由于不必要使用动态特性-但是您在某个地方出错了。