強く型付けされたhtmlヘルパーを使用する十分な理由はありますか...
<%: Html.DisplayTextFor(model => model.Email) %>
とは対照的に...
<%: Model.Email %>
次のモデルを検討してください。
public class MyModel
{
public string Name { get; set; }
[DisplayFormat(NullDisplayText = "No value available!")]
public string Email { get; set; }
}
私からしてみれば:
<%= Html.DisplayTextFor(m => m.Email) %>
<%: Model.Email %>
電子メールを「null」のままにしておくと、1行目に「値なし」と表示されますが、2行目には何も表示されません。
結論:Html.DisplayTextForはプロパティのDataAnnotationsを考慮に入れますが、<%: Model.Email %>
は考慮しません。また、<%: Model.Email %>
は、値がnullの場合に「オブジェクト参照エラー」をスローしますが、<%= Html.DisplayTextFor %>
はスローしません。
DisplayTextForは、「DisplayFor」および「EditFor」の実行中にも呼び出されます。これにより、テンプレート化されたヘルパーは、設定されている場合は正しいテンプレート化されたヘルパーを使用してテキストを表示します。したがって、単一のテンプレート化されたヘルパーへの変更は、そのテキストアイテムのすべての表示に反映されます...単純な表示、フォームの編集、フォームの作成など等.
まあ、モデルを渡さない(またはnullを渡さない)場合、DisplayTextForは壊れません。 Model.Emailはnullで例外をスローします。したがって、DisplayTextForはより堅牢です。
強く型付けされたヘルパーのポイントは、コンパイル時間のチェックを強化できることです。これは、リファクタリング時に非常に便利です。
DisplayTextForを使用すると、ページ全体で(他の強く型付けされたヘルパーと共に)一貫した構成を使用できます。一部の人々はそれがより魅力的だと思うかもしれません。
DisplayTextForでは、テンプレートとフィールドの名前をパラメーターとして渡すこともできます。