How to Insert Line Break using LabelFor in MVC

耗尽温柔 提交于 2019-12-01 09:40:09

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; }
Deepesh

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?

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!