カスタムHTML Helperの作成
このチュートリアルでは、MVCビューでカスタムHTML Helperを作成する方法を説明します.HTML Helpersを利用することで、退屈な入力HTMLタグを減らすことができます.
チュートリアルの第1部では、ASPについて説明します.NET MVCフレームワーク既存のHTML Helper.次に、カスタムHTML Helperを作成する2つの方法について説明します.静的メソッドと拡張メソッドを作成することでHTML Helperを作成する方法を説明します.
HTML Helperは文字列を返す方法にすぎません.この文字列は、あなたが望む内容を表すことができます.たとえば、HTML Helperを使用して、HTML
ASP.NET MVCフレームワークには、以下の標準的なHTML Helpersが含まれています(このリストは完全ではありません). Html.ActionLink() Html.BeginForm() Html.CheckBox() Html.DropDownList() Html.EndForm() Html.Hidden() Html.ListBox() Html.Password() Html.RadioButton() Html.TextArea() Html.TextBox()
たとえば、コード1のフォームを考慮します.このフォームは、2つの標準HTML Helperによって表示されます(図1参照).このフォームは、
図01:HTML Helperで表示されるページ(フルサイズ表示をクリック)
コード1–
Html.BeginForm()Helperメソッドは、HTML
もしよろしければ、usingブロックを使わずにHtmlを呼び出すことができます.EndForm()Helperメソッドは、
重要点:
ASP.NET MVCフレームワークにはhelpersのグループが含まれています.8割の場合、カスタムHTML HelperでMVCフレームワークを拡張する必要があります.このチュートリアルの残りの部分では、カスタムHTML Helperを作成する方法を2つ学びます.
コード2–
新しいHTML Helperを作成する最も簡単な方法は、文字列を返す静的メソッドを作成することです.たとえば、HTML
コード3-
コード3のクラスは特にありません.
コード4で修正されたIndexビューは、HTML
コード4–
ASPを作成したい場合はNET MVCフレームワークの標準HTML HelperのようなHTML Helperでは、拡張方法を作成する必要があります.拡張メソッドを使用すると、既存のクラスに新しいメソッドを追加できます.HTML Helperメソッドを作成すると、ビューのHtmlプロパティで表されるHtml Helperクラスに新しいメソッドが追加されます.
コード5のクラスにはLabel()という拡張メソッドが
次に、
コード5–
拡張メソッドを作成し、アプリケーションの生成に成功すると、拡張メソッドは他のクラスのすべてのメソッドのようにVisual Studioインテリジェントプロンプトに表示されます.(図2参照).唯一異なるのは、拡張メソッドの横にあるアイコンが特殊(下の矢印)であることです.
図02:Htmlを用いる.Label()拡張メソッド(クリックしてフルサイズを表示)
コード6で修正するIndexビュー用Html.Label()拡張メソッドは、そのすべての
コード6–
このチュートリアルでは、カスタムHTML Helperを作成する方法を2つ学びました.まず、文字列を返す静的メソッドを作成することで、カスタム
このチュートリアルでは、極めて簡単なHTML Helperメソッドの構築に専念しています.HTML Helperはあなたの考え通りに完成できることに注意してください.ツリーリスト、メニュー、データベースレコードなどの豊富なコンテンツを表示するHTML Helperを作成できます.
チュートリアルの第1部では、ASPについて説明します.NET MVCフレームワーク既存のHTML Helper.次に、カスタムHTML Helperを作成する2つの方法について説明します.静的メソッドと拡張メソッドを作成することでHTML Helperを作成する方法を説明します.
HTML Helperの理解
HTML Helperは文字列を返す方法にすぎません.この文字列は、あなたが望む内容を表すことができます.たとえば、HTML Helperを使用して、HTML
<input>
および<img>
などの標準的なHTMLタグを表示できます.また、HTML Helperを使用して、ラベルページやデータベースデータのHTMLテーブルなど、より複雑な内容を表示することもできます.ASP.NET MVCフレームワークには、以下の標準的なHTML Helpersが含まれています(このリストは完全ではありません).
たとえば、コード1のフォームを考慮します.このフォームは、2つの標準HTML Helperによって表示されます(図1参照).このフォームは、
Html.BeginForm()
およびHtml.TextBox()
Helperメソッドを使用して、簡単なHTMLフォームを提示します.図01:HTML Helperで表示されるページ(フルサイズ表示をクリック)
コード1–
Views\Home\Index.aspx
Html.BeginForm()Helperメソッドは、HTML
<form>
のラベルの先頭と末尾を作成するために使用されます.注意Html.BeginForm()
メソッドは、using文で呼び出されます.using文は、<form>
ラベルがusingブロックの最後に閉じられることを保証する.もしよろしければ、usingブロックを使わずにHtmlを呼び出すことができます.EndForm()Helperメソッドは、
<form>
ラベルを閉じるために使用されます.どれが直感的だと思ったら、どれを使ってください.Html.TextBox()
Helperメソッドは、HTML <input>
ラベルを表示するために使用される.ブラウザでソースコードの表示を選択すると、図2に示すようなHTMLソースが表示されます.注ソースコードには標準のHTMLタグが含まれています.重要点:
Html.TextBox()
-HTML Helperは<%= %>
ラベルではなく<% %>
ラベルで表示されることに注意してください.この等号を付けないと、ブラウザには何も表示されません.ASP.NET MVCフレームワークにはhelpersのグループが含まれています.8割の場合、カスタムHTML HelperでMVCフレームワークを拡張する必要があります.このチュートリアルの残りの部分では、カスタムHTML Helperを作成する方法を2つ学びます.
コード2–
Index.aspx Source
静的方法でHTML Helperを作成する
新しいHTML Helperを作成する最も簡単な方法は、文字列を返す静的メソッドを作成することです.たとえば、HTML
<label>
のラベルを表示するためにHTML Helperを新規作成することにしました.コード3のクラスを使用して<label>
を表示できます.コード3-
Helpers\LabelHelper.cs
コード3のクラスは特にありません.
Label()
メソッドは、1つの文字列のみを返します.コード4で修正されたIndexビューは、HTML
LabelHelper
タグを<label>
で提示する.注意ビューは、<%@ imports %>
ネーミングスペースを導入するためのApplication1.Helpers
命令を含む.コード4–
Views\Home\Index2.aspx
拡張方法でHTML Helperを作成する
ASPを作成したい場合はNET MVCフレームワークの標準HTML HelperのようなHTML Helperでは、拡張方法を作成する必要があります.拡張メソッドを使用すると、既存のクラスに新しいメソッドを追加できます.HTML Helperメソッドを作成すると、ビューのHtmlプロパティで表されるHtml Helperクラスに新しいメソッドが追加されます.
コード5のクラスにはLabel()という拡張メソッドが
HtmlHelper。
に追加されています.このような点に注意してください.まず、このクラスは静的クラスであることに注意してください.静的クラスへの拡張方法を定義する必要があります.次に、
Label()
メソッドの最初のパラメータの前にキーワードthis
があることに注意する.拡張メソッドの最初のパラメータは、拡張メソッドが拡張するクラスを示します.コード5–
Helpers\LabelExtensions.cs
拡張メソッドを作成し、アプリケーションの生成に成功すると、拡張メソッドは他のクラスのすべてのメソッドのようにVisual Studioインテリジェントプロンプトに表示されます.(図2参照).唯一異なるのは、拡張メソッドの横にあるアイコンが特殊(下の矢印)であることです.
図02:Htmlを用いる.Label()拡張メソッド(クリックしてフルサイズを表示)
コード6で修正するIndexビュー用Html.Label()拡張メソッドは、そのすべての
<label>
ラベルを示します.コード6–
Views\Home\Index3.aspx
まとめ
このチュートリアルでは、カスタムHTML Helperを作成する方法を2つ学びました.まず、文字列を返す静的メソッドを作成することで、カスタム
Label()
HTML Helperを作成する方法を学びました.次に、HtmlHelperクラスで拡張メソッドクラスを作成してカスタムLabel()
HTML Helperを作成する方法を学びました.このチュートリアルでは、極めて簡単なHTML Helperメソッドの構築に専念しています.HTML Helperはあなたの考え通りに完成できることに注意してください.ツリーリスト、メニュー、データベースレコードなどの豊富なコンテンツを表示するHTML Helperを作成できます.