Search code examples
asp.net-mvcasp.net-mvc-viewmodel

Inserting line breaks in DisplayName attributes


In my ViewModel there is a property that needs a 2 line label but when I place a <br /> in the DisplayName attribute the HTML code is printed to the page instead of being interpreted as a line break. Is there a way to get a DisplayName to have a line break in it?

View:

    <tr>
        <td>
            @Html.LabelFor(m => m.GrossGallons)
        </td>
        <td>
        </td>
    </tr>

ViewModel:

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

Output trying to get:

Gross Gallons
(Max: 6,000)

Solution

  • There is a simple way of doing this - use \n instead of <br />, and use CSS to make it work.

    Model:

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

    CSS:

    label { white-space: pre-wrap; }
    

    I would recommend making the CSS selector as specific as possible, so as not to catch other labels (in case you're using labels by hand elsewhere, where your source code may contain whitespace). For example, in bootstrap I would've applied this to label.control-label.

    You could also attach a more specific style to that label only, and style only that class.

    @Html.LabelFor(m => m.GrossGallons, new { @class = "multiline-label" })