Razor三元表达式中的Html字面值

fea*_*net 26 html ternary-operator razor asp.net-mvc-3

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

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

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

Dar*_*rov 52

请尝试以下方法:

@Html.Raw(string.IsNullOrEmpty(myString) ? "&nbsp;" : Html.Encode(myString))
Run Code Online (Sandbox Code Playgroud)

但是我建议你写一个帮助你完成这项工作,这样你就不必把意见变成意大利面了:

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));
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在你的视图中简单地说:

@Html.ValueOrSpace(myString)
Run Code Online (Sandbox Code Playgroud)