我在使用剃刀显示unicode字符时遇到问题。当它遍历我的模型中的所有项目时,我希望✔出现在任何地方fileID不等于零。到目前为止我试过这个:
@foreach (var item in Model)
{
@(item.fileID == "0" ? "" : "✔")
}
但它似乎只显示✔而不是检查是否有其他方式我应该格式化这个?
答案 0 :(得分:1)
我通过添加Html.Raw解决了这个问题,使得页面读取三元语句响应为普通HTML而不是字符串。
@foreach (var item in Model)
{
@( Html.Raw(item.fileID == "0" ? "" : "✔"))
}
答案 1 :(得分:0)
@(item.fileID == "0" ? "" : "✔")
Razor将为您提供HTML转义字符串,因此您应该编写纯文本,而不是HTML转义。只要你有一个可以用适当的编码保存模板的编辑器,这应该没问题:
@(item.fileID == "0" ? "" : "✔")
如果您只使用ASCII,那么您可以使用C#string literal escape:
@(item.fileID == "0" ? "" : "\u2714")
答案 2 :(得分:0)
即使在较旧的版本中,它也可以在Razor中使用:
@(item.fileID == "0" ? "" : "✔")
如果不是,并且输出混乱(也称为Mojibake),则页面编码有问题。
首先要验证的是,浏览器正在通过Content-Type
HTTP响应标头或<meta charset=“utf-8”>
标签将页面解释为Unicode。 HTTP响应标头会覆盖所有元标记。
要验证的第二件事是,您的剃刀文件(以及所有布局)已使用UTF-8编码保存:
然后,将其另存为Unicode (UTF-8 with signature) - Codepage 65001
。
从理论上讲,UTF-8 without signature
应该也可以正常工作,但是在我的实验中,它需要签名/ BOM,并且大多数Visual Studio文件似乎仍然包含BOM。