2

I have in my Model:

[Display(Name = "Check to enter <break> the Quantity of items")]
public bool IsLimitedQuantity { get; set; }

and I am using

@Html.LabelFor(shop => shop.IsLimitedQuantity) 

in my view.

Please suggest how I can fix this, because the label is just showing <break> as it is, instead of breaking to a new line.

Hannele
  • 9,301
  • 6
  • 48
  • 68
Umesh K.
  • 311
  • 2
  • 6
  • 14

2 Answers2

8

You could write a custom LabelFor helper which doesn't HTML encode the text as does the standard LabelFor helper:

public static class LabelExtensions
{
    public static IHtmlString UnencodedLabelFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression)
    {
        var metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData);
        var htmlFieldName = ExpressionHelper.GetExpressionText(expression);
        var text = (metadata.DisplayName ?? (metadata.PropertyName ?? htmlFieldName.Split(new char[] { '.' }).Last<string>()));
        if (string.IsNullOrEmpty(text))
        {
            return MvcHtmlString.Empty;
        }
        var tagBuilder = new TagBuilder("label");
        tagBuilder.Attributes.Add("for", TagBuilder.CreateSanitizedId(html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlFieldName)));
        tagBuilder.InnerHtml = text;
        return new HtmlString(tagBuilder.ToString(TagRenderMode.Normal));
    }
}

and then use this custom helper in the view:

@Html.UnencodedLabelFor(x => x.IsLimitedQuantity)

Now the HTML tags in the display name will be rendered without encoding:

[Display(Name = "Check to enter <br/> the Quantity of items")]
public bool IsLimitedQuantity { get; set; }
Darin Dimitrov
  • 1,023,142
  • 271
  • 3,287
  • 2,928
0

Using Html decode may help. MVC for security reasons encode all the values.

How to display HTML stored in a database from an ASP.NET MVC view?

Community
  • 1
  • 1
Deepesh
  • 5,346
  • 6
  • 30
  • 45