在DisplayName属性中插入换行符

Mat*_*ete 8 asp.net-mvc asp.net-mvc-viewmodel

在我的ViewModel中有一个需要2行标签的属性,但是当我<br />DisplayName属性中放置HTML代码时,会将HTML代码打印到页面而不是被解释为换行符.有没有办法DisplayName让它有一个换行符呢?

视图:

    <tr>
        <td>
            @Html.LabelFor(m => m.GrossGallons)
        </td>
        <td>
        </td>
    </tr>
Run Code Online (Sandbox Code Playgroud)

视图模型:

    [DisplayName("Gross Gallons <br /> (Max: 6,000)")]
    public decimal GrossGallons { get; set; }
Run Code Online (Sandbox Code Playgroud)

输出试图得到:

Gross Gallons
(Max: 6,000)
Run Code Online (Sandbox Code Playgroud)

Ric*_*ard 15

有一种简单的方法可以做到这一点 - 使用\n而不是<br />使用CSS来使其工作.

模型:

[DisplayName("Gross Gallons\n(Max: 6,000)")]
public decimal GrossGallons { get; set; }
Run Code Online (Sandbox Code Playgroud)

CSS:

label { white-space: pre-wrap; }
Run Code Online (Sandbox Code Playgroud)

我建议尽可能使CSS选择器具体化,以免捕获其他标签(如果您在其他地方手工使用标签,您的源代码可能包含空格).例如,在bootstrap中我会应用它label.control-label.

您还可以仅为该标签附加更具体的样式,并仅为该类设置样式.

@Html.LabelFor(m => m.GrossGallons, new { @class = "multiline-label" })
Run Code Online (Sandbox Code Playgroud)