Html.LabelFor 未渲染 HTML

Html.LabelFor not rendering HTML

我正在绑定一个模型来查看。

public class Validation
{
   [Display("Please enter in <h5>day(s)</h5>")]
   public string Message { get; set; }
}

这里Message属性会设置为Please enter in <h5>day(s)</h5>.

鉴于我正在将模型 属性 绑定到 LabelFor

@Html.LabelFor(m => m.Message)

期望输出为

Please enter in day(s)

但实际输出是

Please enter in <h5>day(s)</h5>

我希望字符串的一部分在大小和外观上有所不同,因此将 CSS 应用于整个标签并不是我想要的。

您的显示字符串 "<h5>some text</h5>" 将呈现为文本,而不是 HTML。 MVC 会将 < > 字符编码为 &lt; &gt;,使它们按原样显示。

无论如何你都不应该这样做。

正确的方法是应用显示字符串来包含您想要的文本:

[Display("some text")]

然后创建一个CSS class:

label.fancyLabel {
    /* your style here that makes a label look like a h5 */
}

然后将 class 应用于标签(来自 .NET MVC - How to assign a class to Html.LabelFor?):

@Html.LabelFor(m => m.Message, new { @class= "fancyLabel" })

至于您的编辑,如果您只想将 Display 属性的文本呈现为文字 HTML,您必须:

  • 介绍你自己的 HTML 帮手。
  • 在那里,写一个标签(并确保设置 for= 属性)。
  • 读取 DisplayAttribute 的值。
  • @Html.Raw() 该值作为标签文本。
  • 使用@Html.YourLabelHelper(m => m.Message)渲染它。

但是在你的模型上使用 HTML 是不可取的。视图和模板应该决定如何呈现模型,而不是相反。