Razor - 如何在变量中存储html特殊字符

时间:2018-05-23 09:15:08

标签: html asp.net-mvc razor

在我的html页面上,我想从模型中的一系列条目中创建一个列表。但是,其中一些条目可能为null,在这种情况下,我想要一个空列表项,如下所示:

  • 东西
  • 其他东西
  • 更多东西

我通过插入一个不间断的空格字符来做到这一点。 (常规空格不会生成空列表项)这是一段代码片段:

<ul>
    @{ 
        foreach (var x in Model.Entries)
        {
            var rayon = x.Rayon ?? "&nbsp;";
            <li>@rayon</li>
        } 
    }
</ul>

可悲的是,这不起作用,因为它会逐字地粘贴&nbsp;。 删除引号,和/或在开头添加@:将无法编译。

我该怎么办?

2 个答案:

答案 0 :(得分:2)

您可以使用Html.Raw

像这样使用

<li> @(Html.Raw(rayon)) </li>

答案 1 :(得分:1)

而不是"&nbsp;"只给出一个空白字符串:

var rayon = x.Rayon ?? string.Empty;

事实上,我认为你甚至可以将变量赋值一起废弃,只使用x.Rayon原样 - 空值应具有相同的效果

<ul>
    @{ 
        foreach (var x in Model.Entries)
        {     
            <li>x.Rayon</li>
        } 
    }
</ul>

<强>更新 以上两点都适合我。所以,如果仍然不能正常工作,那看起来就是你的ul上的CSS /样式。

e.g。 好吧,我认为这取决于你所拥有的ul / CSS上的CSS /样式(以上都适用于我)。例如以下CSS将隐藏空li元素:

ul li:empty {
   display: none;
}

所以,看看你的CSS。

如果您不想更改现有样式,可以在CSS中添加一个额外的类,并将其应用于此实例。 即 CSS:

ul.show-empty-li li:empty{
    display:list-item;
}

HTML:

<ul class="show-empty-li">
...
</ul>