Html.Display,Raw未显示转换为Local的DateTime

时间:2015-09-29 19:39:32

标签: c# html asp.net-mvc datetime razor

我有一个List索引视图,其中一个模型值是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>

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

1 个答案:

答案 0 :(得分:2)

IHtmlString不会将内容输出到只返回带有原始内容的@Html.Raw(var) 的网页。

造成混淆的是,大部分时间它与Razor表达式一起使用:

@{...}

这个表达式使函数的返回输出到页面,但在你的例子中,你直接在代码块(@)中使用它。

只需在通话前添加@Html.Raw(cstTime.ToString() + " " + cstZone.StandardName); 即可:

{{1}}