actionlinkがルートテーブルを使用して正しいリンクを表示することを理解していますが、Html.Labelヘルパーにはどのような利点がありますか?
3 に答える
ラベルヘルパーはそれほど多くのことをしません。その機能は、マークアップの小さなビットをカプセル化することであるため、毎回手動でHTMLを作成する必要はありません。また、インテリセンスを提供します。これは、モデルの値を変更するときに役立ちます。その後、戻ってビューを編集する必要はありません。理想的には、ラベルのテキストとターゲットは、HTMLで定義されているのではなく、ViewModel
使用から駆動されている必要があります。LabelFor
ヘルパーのソースコードを見るとLabel
、次のようになっています。
//Create a new <label> element
TagBuilder tag = new TagBuilder("label");
//Add the attribute "for" with the id value of the target <input>
tag.Attributes.Add("for", TagBuilder.CreateSanitizedId(html.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(htmlFieldName)));
//Set the label text <label>My Text</label>
tag.SetInnerText(resolvedLabelText);
//Merge any attributes specified in the htmlAttributes arguement (ex: class="style")
tag.MergeAttributes(htmlAttributes, replaceExisting: true);
//Write the output rendering, this is not a self closing tag </label>
return tag.ToMvcHtmlString(TagRenderMode.Normal);
注:ここでは、LabelではなくLabelForを参照しました。ただし、LabelForヘルパーは、実際には内部でLabelヘルパーを呼び出します。LabelForヘルパーがベストプラクティスです。
これをMVCブックから読んでください
「最後に、これらのHTMLヘルパーメソッドがレンダリングするフィールド値を自動的にHTMLエンコードすることは注目に値します。これは非常に重要です。そうしないと、アプリケーション全体にXSSの脆弱性が蔓延することはありません。」
Pro ASP.NETMVC2フレームワーク
スティーブンサンダーソン
Html.Label
およびは、 HTMLHtml.LabelFor
ラベルタグのラッパーです。このタグの主要な「非表示」機能の1つは、入力コントロールに関連付けられている場合、ラベルをクリックすることで、関連付けられたコントロールにフォーカスを設定できることです。これはテキストボックスなどにとってはそれほど大きな問題ではありませんが、チェックボックスやラジオボタンと一緒に使用すると、ユーザーの使いやすさが大幅に向上します。ラベルをクリックすると、コントロール自体の内部をクリックするのと同じ効果があります。