我的模型中有:
[Display(Name = "Check to enter <break> the Quantity of items")]
public bool IsLimitedQuantity { get; set; }
我正在使用
@Html.LabelFor(shop => shop.IsLimitedQuantity)
在我看来。
请建议我如何解决这个问题,因为标签只是按原样显示 <break> ,而不是换行。
我的模型中有:
[Display(Name = "Check to enter <break> the Quantity of items")]
public bool IsLimitedQuantity { get; set; }
我正在使用
@Html.LabelFor(shop => shop.IsLimitedQuantity)
在我看来。
请建议我如何解决这个问题,因为标签只是按原样显示 <break> ,而不是换行。
您可以编写一个自定义LabelFor
助手,它不像标准LabelFor
助手那样对文本进行 HTML 编码:
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; }
使用 Html 解码可能会有所帮助。出于安全原因,MVC 对所有值进行编码。