如何在MVC使用LabelFor来插入换行符(How to Insert Line Break us

2019-06-24 05:48发布

我在我的模型:

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

而我使用

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

在我看来。

请建议我怎么能解决这个问题,因为标签只是显示<突破>,因为它是不是突破到一个新的生产线。

Answer 1:

你可以写一个自定义的LabelFor帮手不HTML编码的文本一样的标准LabelFor帮手:

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

然后用在视图中这个自定义帮助:

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

现在,在显示名称的HTML标签将不经过编码而呈现:

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


Answer 2:

使用HTML解码可能有所帮助。 MVC出于安全原因编码所有值。

如何显示从ASP.NET MVC视图存储在数据库中的HTML?



文章来源: How to Insert Line Break using LabelFor in MVC