Razor 三元表达式中的 HTML 文字

标签 html asp.net-mvc-3 razor ternary-operator

我正在尝试做类似下面的事情

<div id="test">
    @(
        string.IsNullOrEmpty(myString)
          ? @:&nbsp;
          : myString   
    )
</div>

上面的语法是无效的,我已经尝试了很多不同的东西但无法让它工作。

最佳答案

尝试以下操作:

@Html.Raw(string.IsNullOrEmpty(myString) ? "&nbsp;" : Html.Encode(myString))

但我建议您编写一个助手来完成这项工作,这样您就不必将您的观点变成意大利面条:

public static class HtmlExtensions
{
    public static IHtmlString ValueOrSpace(this HtmlHelper html, string value)
    {
        if (string.IsNullOrEmpty(value))
        {
            return new HtmlString("&nbsp;");
        }
        return new HtmlString(html.Encode(value));
    }
}

然后在您看来只是:

@Html.ValueOrSpace(myString)

关于Razor 三元表达式中的 HTML 文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6857204/

相关文章:

c# - 在 MVC3 中自定义输出缓存

c# - ASP.NET MVC3 在 View 中使用模型和自定义 ValidationModel

css - 如何在 MVC View 中将文本包装在 DisplayFor 中?

html - 我可以使一个部分内的 iframe 具有内联 block 显示吗?

asp.net - 在 Azure 上增加 AppPool 超时的优点/缺点

javascript - 在 Canvas 上打印倾斜文本而不旋转整个 Canvas

c# - 有没有办法让 RazorEngine 抛出异常来呈现使用 JSON 作为数据模型的模板?

c# - 将 css 样式表的内容呈现为内联样式属性

html - Dreamweaver 预览浏览器不同于实际网页 HTML CSS

javascript - 绑定(bind)到按键在 IE8 及更早版本中不起作用