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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (86)

@Html.Label()@Html.LabelFor()@Html.LabelForModel()之间有什么区别?

提问于
用户回答回答于

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>
用户回答回答于

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>。可以在一个地方定义该属性的标签,并将它显示在任何地方。

所属标签

可能回答问题的人

  • 人生的旅途

    10 粉丝484 提问5 回答
  • 无聊至极

    4 粉丝504 提问5 回答
  • 嗨喽你好

    7 粉丝480 提问4 回答
  • 富有想象力的人

    4 粉丝0 提问3 回答

扫码关注云+社区

领取腾讯云代金券