37

LabelForの代わりに使用する必要があるのはなぜ<label>ですか?

例えば。

@Html.LabelFor(model => model.FirstName)
@Html.DisplayFor(model => model.FirstName)

<label for="FirstName">First Name</label>
@Html.DisplayFor(model => model.FirstName)

上記に加えて、@pswg はこの質問の DRY の側面をカバーしています。また、ローカライズに役立つかどうかも知りたいです。すなわち。現在の言語設定に基づくさまざまなラベル。

4

2 に答える 2

50

モデルを次のように装飾した場合DisplayNameAttribute:

[DisplayName("First Name")]
string FirstName { get; set; }

次に、ラベルのテキストを 1 か所で指定するだけです。同様のラベルを複数の場所に作成する必要がある場合があります。ラベルのテキストを変更する必要がある場合は、1 回だけ変更すると便利です。

アプリケーションをさまざまな言語にローカライズしたい場合、これはさらに重要ですDisplayAttribute

[Display(Name = "FirstNameLabel", ResourceType = typeof(MyResources))]
string FirstName { get; set; }

また、より厳密に型指定されたビューが得られることも意味します。文字列を大量に入力しなければならない場合のように、文字列をファット フィンガー化するのは簡単"FirstName"ですが、ヘルパー メソッドを使用すると、ほとんどの場合、コンパイラはそのような間違いを検出できます。

于 2013-10-29T23:07:29.830 に答える
5

LabelForコントロールを気にすることなく、View Model からすべてを制御できます。

2 つの場所で同じビュー モデルを使用するとします。これは、1 つの場所で名前を変更して、すべてのコントロールを更新できることを意味します。

使用する必要はありません、用途があります。

于 2013-10-29T23:08:07.280 に答える