超文本标记语言显示,原始不显示日期时间转换为本地

本文关键字:显示 转换 时间 日期 原始 超文本标记语言 | 更新日期: 2023-09-27 18:15:22

我有一个列表索引视图,其中一个模型值是UTC时间戳。我已经编写了检查它是否为空的代码,如果它不是输出到视图的时间戳转换为指定的时区。然而,尽管在调试器中逐步执行,并且调试器碰到Html.Raw.Display行和显示{9/29/2015 2:23:10 PM}值的变量,td还是空的

                <td>
                    @{
                        DateTime tmp;
                        //Check if not null, if not null convert to specified time zone
                        if (DateTime.TryParse(item.timestamp.ToString(), out tmp))
                        {
                            tmp = item.timestamp;
                            TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
                            DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(tmp, cstZone);
                            Html.Raw(cstTime.ToString() + " " + cstZone.StandardName); //Using Html.Display also fails
                        }
                        else
                        {
                            Html.DisplayFor(modelItem => item.timestamp);
                        }
                    }
                </td>

我的代码在这里做错了什么?

超文本标记语言显示,原始不显示日期时间转换为本地

HtmlHelper.Raw不输出内容到页面,它只返回带有Raw内容的IHtmlString

让你感到困惑的是,大多数时候它与Razor表达式一起使用:

@Html.Raw(var)

这个表达式是什么使函数的返回输出到页面,但在您的示例中,您直接在代码块(@{...})中使用它。

只需在调用前添加@,它就会工作:

@Html.Raw(cstTime.ToString() + " " + cstZone.StandardName);