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

2 asp.net-mvc html-helper razor

@html.Label()和之间有什么区别@html.LabelFor()?

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

Fel*_*ani 6

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

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

并在视图中......

// View
@model YourModel
@Html.LabelFor(m => m.YourProperty)
Run Code Online (Sandbox Code Playgroud)

Label只是用于在View中生成一个Label,没有必要通过它来关联Model.

// View
@Html.Label("YourProperty")
Run Code Online (Sandbox Code Playgroud)

两者都将生成此HTML输出

<label for="YourProperty">YourProperty</label>
Run Code Online (Sandbox Code Playgroud)

两者都会生成一个label标签.

如果您查看或PartialView不与型号类型的,你不能使用LabelFor,EditorFor,TextBoxForHTML帮手,只是Label,TextBox等等.

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

查看用于Label扩展的asp.net mvc的内部代码源.