複数のビューで@helpersを再利用
上記の例では、呼び出したコードと同じビューテンプレート内に定義していますが、ビューテンプレート外で@helperメソッドを定義して、プロジェクト内のすべてのビューテンプレートで再利用することも可能です。
プロジェクトのルートに作成された『App_Code』ディレクトリ内にある.cshtml/.vbhtmlファイルに、@helperメソッドを保存すれば完了です。例えば、以下では、『App_Code』フォルダに『ScottGu.cshtml』を作成し、2つの異なるヘルパーメソッドをそのファイル内に定義しました。ヘルパーメソッドは、各ファイルにいくつでも持てます。
ヘルパーをアプリケーションレベルで定義すると、アプリケーションのどのビューテンプレート内でも使用可能になります。
上記の『App_Code』のScottGu.cshtmlテンプレートは、『ScottGu』というクラスに、 『DisplayPrice』および『AnotherHelper』の静的メンバーとともに、ロジック的にコンパイルします。それを呼び出すために、以下のコードを使って、前回のサンプルを書きなおします。
Visual Studioは、このように、アプリケーションレベルのヘルパーを呼び出す時、コードIntelliSenseを提供します。
まとめ
Razorの@helper文法により、個々のビューテンプレート内、またはプロジェクトのすべてのビューテンプレートで再利用可能なヘルパーメソッドに、描画機能をカプセル化する便利な方法が利用できるようになります。
この機能を使用して、よりクリーンで保守しやすいコードが書けます。
Hope this helps,
Scott
P.S. ブログに加え、現在Twitterを使って簡単な更新やリンク共有を行っています。twitter.com/scottguで、私をフォローしてください。