ASP.NET IDictionary 上的日期时间格式
本文关键字:日期 时间 格式 NET IDictionary ASP | 更新日期: 2023-09-27 18:35:52
第一篇文章。
我正在 ASP.NET MVC 中创建一个数据库门户,供访问我的数据库的人能够获取数据库、表格、大小等
在我看来,我正在迭代一个包含 SQL TOP 100 查询结果(数据行)的动态列表,使用另一个 foreach 循环中的 foreach 循环,该循环遍历 SQL 列标题列表;这部分工作正常。我遇到的问题是,对于任何日期时间结果,我想缩短它们。我已经搜索了 2 个小时,但解决方案没有做到。如果我只是引用@item我觉得它会起作用,但我认为 IDictionary<> 正在造成麻烦。这是工作循环:
@foreach (dynamic item in Model.SampleData)
{
IDictionary<string, object> dict = item;
<tr>
@foreach (var col in Model.Columns)
{ <td class="small">@dict[col.COLUMN_NAME]</td> }
</tr>
这工作正常。但我想要任何@dict[col.COLUMN_NAME] 为日期时间的值,具有短日期格式。我使用 if 语句来过滤 DateTime 值(有效),但无法获得正确的语法来实际正确格式化日期。我已经根据这个网站的例子尝试了以下内容,但都失败了:
if (dict[col.COLUMN_NAME] is DateTime)
<td>@dict[col.COLUMN_NAME].ToShortDateString()</td> //FAIL
<td>@dict[col.COLUMN_NAME].ToString("dd/MM/yyyy")</td> //FAIL
<td>@dict[col.COLUMN_NAME].Date.ToString("dd/MM/yyyy")</td> //FAIL
鉴于它是一个列表,没有模型属性供我[装饰]。我想保持循环的方式,只是弄清楚如何格式化字典[col.COLUMN_NAME]。
提前谢谢。
if (dict[col.COLUMN_NAME] is DateTime)
<td>@(((DateTime)dict[col.COLUMN_NAME]).ToShortDateString())</td>
这里发生了很多打字问题。我认为您的麻烦源于object
打电话给ToString
,而不是DateTime
我会尝试纠正它......试试这个:
@foreach (IDictionary<string, DateTime> dict in Model.SampleData)
{
<tr>
@foreach (var col in Model.Columns)
{ <td class="small">@dict[col.COLUMN_NAME].ToString("dd/MM/yyyy")</td> }
</tr>
这里的关键是将您的字典更改为 IDictionary<string, DateTime>
.原因是object
还定义了ToString
方法,但是它不会为您格式化日期。如果更改字典的签名,则索引器将返回DateTime
而不是Object
,并且将调用正确的ToString
方法。
如果由于未显示的原因而无法使用此语法,也可以使用强制转换来实现此语法。
@foreach (dynamic item in Model.SampleData)
{
IDictionary<string, object> dict = item;
<tr>
@foreach (var col in Model.Columns)
{ <td class="small">@((DateTime) dict[col.COLUMN_NAME]).ToString("dd/MM/yyyy")</td> }
</tr>