90

@Html.Label()和方法@Html.LabelFor()有什么区别@Html.LabelForModel()

4

4 回答 4

115

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

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

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

// Output
<label for="Test">Test</label>

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>

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>
于 2013-05-02T20:09:07.903 回答
12

Html.Label- 只需使用传递给构造函数的字符串创建一个标签标记

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

public class MyModel
{
    [Display(Name="My property title")
    public class MyProperty{get;set;}
}

在您看来:

Html.LabelFor(x => x.MyProperty) //Outputs My property title

在上面,LabelFor 将显示<label for="MyProperty">My property title</label>. 这很好用,因此您可以在一个地方定义该属性的标签并将其显示在任何地方。

于 2013-05-02T20:06:03.863 回答
7

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

LabelForModel 方法返回一个 HTML 标签元素和模型表示的属性的属性名称。

您可以参考以下代码:

模型中的代码:

using System.ComponentModel;

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

视图中的代码:

@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>

输出截图:

在此处输入图像描述

参考asp.net论坛上的回答

于 2017-04-21T20:57:57.963 回答
4

假设您需要一个带有文本客户名称的标签,而不是使用 2 种方法来实现它

[1]@Html.Label("CustomerName")

[2]@Html.LabelFor(a => a.CustomerName)  //strongly typed

第二种方法使用了模型中的属性。如果您的视图实现了模型,那么您可以使用第二种方法。

更多信息请访问以下链接

http://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx

于 2013-05-02T19:52:49.473 回答