什么是Html.Label,Html.LabelFor和Html.LabelForModel之间的区

2019-09-01 18:50发布

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

Answer 1:

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>


Answer 2:

Html.Label -只需创建一个标签标记与任何传递到构造函数的字符串

Html.LabelFor -创建针对特定属性的标签。 这是强类型。 默认情况下,这将只是做了属性的名称(在下面的例子中,它会输出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> 。 这工作得很好,所以你可以在一个地方有什么该属性的标签会并显示它无处不定义。



Answer 3:

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

该LabelForModel方法返回一个HTML label元素和由该模型所表示的属性的属性名称。

你可以参考下面的代码:

代码模型:

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论坛



Answer 4:

假设你需要用文本客户名称标签比你可以使用2种方式achive它

[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



文章来源: What's the difference between Html.Label, Html.LabelFor and Html.LabelForModel