Html.Label,Html.LabelFor和Html.LabelForModel有什么区别

Fab*_*cio 84 asp.net-mvc razor

什么之间的区别@Html.Label(),@Html.LabelFor()@Html.LabelForModel()方法呢?

Ant*_*t P 110

Html.Label 为名称与输入文本匹配的输入提供标签(更具体地说,对于与字符串表达式匹配的模型属性):

// Model
public string Test { get; set; }

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

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

Html.LabelFor 为您提供的表达式(通常是模型属性)表示的属性提供标签:

// Model
public class MyModel
{
    [DisplayName("A property")]
    public string Test { get; set; }
}

// View
@model MyModel
@Html.LabelFor(m => m.Test)

// Output
<label for="Test">A property</label>
Run Code Online (Sandbox Code Playgroud)

Html.LabelForModel有点棘手.它返回一个标签,其for值是模型对象表示的参数的值.这对于自定义编辑器模板尤其有用.例如:

// Model
public class MyModel
{
    [DisplayName("A property")]
    public string Test { get; set; }
}

// Main view
@Html.EditorFor(m => m.Test)

// Inside editor template
@Html.LabelForModel()

// Output
<label for="Test">A property</label>
Run Code Online (Sandbox Code Playgroud)


Cor*_*Air 12

Html.Label - 只需创建一个标签标签,其中包含传递给构造函数的字符串

Html.LabelFor - 为该特定属性创建标签.这是强类型的.默认情况下,这只会执行属性的名称(在下面的示例中,如果Display属性不存在,它将输出MyProperty).另一个好处是你可以在你的模型中设置显示属性,这将是放在这里的内容:

public class MyModel
{
    [Display(Name="My property title")
    public class MyProperty{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

在你看来:

Html.LabelFor(x => x.MyProperty) //Outputs My property title
Run Code Online (Sandbox Code Playgroud)

在上面,LabelFor将显示<label for="MyProperty">My property title</label>.这很好用,所以你可以在一个地方定义该属性的标签是什么,并让它显示在任何地方.


And*_*yWD 6

我认为@Html.LabelForModel()应该更详细地解释其用法.

LabelForModel方法返回HTML标签元素以及由模型表示的属性的属性名称.

您可以参考以下代码:

型号代码:

using System.ComponentModel;

[DisplayName("MyModel")]
public class MyModel
{
    [DisplayName("A property")]
    public string Test { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

代码在视图中:

@Html.LabelForModel()
<div class="form-group">

    @Html.LabelFor(model => model.Test, new { @class = "control-label col-md-2" })

    <div class="col-md-10">
        @Html.EditorFor(model => model.Test)
        @Html.ValidationMessageFor(model => model.Test)
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

输出截图:

在此输入图像描述

参考asp.net论坛上的回答