什么之间的区别@Html.Label(),@Html.LabelFor()和@Html.LabelForModel()方法呢?
Answers:
Html.Label 为名称与指定输入文本匹配的输入提供标签(更具体地说,为与字符串表达式匹配的model属性):
// 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>
@Html.EditorFor(m => Test)还是@Html.EditorFor(m => m.Test)?
Html.Label -只需使用传递到构造函数中的字符串创建标签标签
Html.LabelFor-为该特定属性创建标签。这是强类型的。默认情况下,这只会做属性的名称(在下面的示例中,如果不存在该Display属性,它将输出MyProperty)。这样做的另一个好处是,您可以在模型中设置display属性,这将放在这里:
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>。这样效果很好,因此您可以在一个地方定义该属性的标签,然后将其显示在任何地方。
LabelForModel目的-请参阅我的答案。
我认为 @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>
输出截图:
假设您需要一个带有文字customername的标签,而不可以使用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-strong-typed-html-helpers.aspx