1. ホーム
  2. asp.net-mvc

[解決済み] Html.Label、Html.LabelFor、Html.LabelForModelの違いは何ですか?

2023-04-04 07:48:58

質問

とはどう違うのでしょうか? @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>