@ html.Label和@html.LabelFor之间的区别

时间:2013-12-12 11:10:38

标签: asp.net-mvc razor html-helper

@html.Label()@html.LabelFor()之间的区别是什么?

此外,在Razor上下文中强类型和非强类型视图的情况下,使用这些方法的语法是什么?

1 个答案:

答案 0 :(得分:6)

LabelFor将使用您在View上设置的Model来创建类型化的html帮助器。它使您的代码变得简单,并根据您的模型生成HTML,因为您在模型的属性上使用Attributes,例如Display()

// Model
public class YourModel
{
    [DisplayName("Some property")]
    public string YourProperty { get; set; }
}

并在视图中......

// View
@model YourModel
@Html.LabelFor(m => m.YourProperty)

Label仅用于在您的视图中生成标签,不必与Model相关联。

// View
@Html.Label("YourProperty")

两者都会生成此HTML输出

<label for="YourProperty">YourProperty</label>

两者都会生成label标记。

如果您的视图或部分视图未使用模型键入,则无法使用LabelForEditorForTextBoxFor html助手,只能使用Label,{{1}等等..

如果在非类型化的部分视图中添加TextBox,它将使用主视图的模型生成。每次从视图中获取局部视图时,都会传递模型。如果模型为null,则它只呈现Html.Label("field")标记,如果模型具有此属性,则html帮助程序将读取该值并对其进行渲染。

查看internal code source of asp.net mvc for Label extensions