@html.Label()
和@html.LabelFor()
之间的区别是什么?
此外,在Razor上下文中强类型和非强类型视图的情况下,使用这些方法的语法是什么?
答案 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
标记。
如果您的视图或部分视图未使用模型键入,则无法使用LabelFor
,EditorFor
,TextBoxFor
html助手,只能使用Label
,{{1}等等..
如果在非类型化的部分视图中添加TextBox
,它将使用主视图的模型生成。每次从视图中获取局部视图时,都会传递模型。如果模型为null,则它只呈现Html.Label("field")
标记,如果模型具有此属性,则html帮助程序将读取该值并对其进行渲染。