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 会将 <
>
字符编码为 <
>
,使它们按原样显示。
无论如何你都不应该这样做。
正确的方法是应用显示字符串来包含您想要的文本:
[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 是不可取的。视图和模板应该决定如何呈现模型,而不是相反。
我正在绑定一个模型来查看。
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 会将 <
>
字符编码为 <
>
,使它们按原样显示。
无论如何你都不应该这样做。
正确的方法是应用显示字符串来包含您想要的文本:
[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 是不可取的。视图和模板应该决定如何呈现模型,而不是相反。