我有一个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>
我的代码在这里做错了什么?
答案 0 :(得分:2)
IHtmlString
不会将内容输出到只返回带有原始内容的@Html.Raw(var)
的网页。
造成混淆的是,大部分时间它与Razor表达式一起使用:
@{...}
这个表达式使函数的返回输出到页面,但在你的例子中,你直接在代码块(@
)中使用它。
只需在通话前添加@Html.Raw(cstTime.ToString() + " " + cstZone.StandardName);
即可:
{{1}}