Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

ASP.NET MVC 3とRazorの@helper文法

連載:ScottGu's Blog翻訳

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2011/05/25 14:00

 本稿は、Scott Guthrie氏のブログを、氏の許可を得て、翻訳、転載したものです。米Microsoft社の副社長で、ASP.NETやSilverlightの開発チームを統率する氏のブログでは、次期製品を含む最新の技術をいち早く紹介しています。原典:ASP.NET MVC 3 and the @helper syntax within Razor。

目次
コラム

 本稿は、Scott Guthrie氏のブログを、氏の許可を得て、翻訳、転載したものです。米Microsoft社の副社長で、ASP.NETやSilverlightの開発チームを統率する氏のブログでは、次期製品を含む最新の技術をいち早く紹介しています。

 

 原典:ASP.NET MVC 3 and the @helper syntax within Razor

ASP.NET MVC 3とRazorの@helper文法

 ASP.NET MVC 3は、既存の.aspxビューエンジンのサポートおよび改善を継続して行うとともに、『Razor』という新しいビューエンジンオプションもサポートしています。Razorはビューテンプレートを書く時の文字数やキーストロークを最小化し、高速で流線的なコーディングのワークフローが可能になります。

 多くのテンプレート文法とは違い、Razorでは、HTMLでサーバーブロックの開始と終了を明示的に示すコードが必要ありません。Razorのパーサーはコードからこれを推測します。これにより、コンパクトで表現力のある文法が可能となり、クリーンで高速で楽しくタイプできます。

 過去9か月間に行った ブログ投稿からRazorについての詳細を確認できます。

 本日のブログでは、多くの人がまだ知らないRazorの素晴らしい機能で、@helper文法を使ってヘルパーメソッドの再利用を定義する機能をカバーします。

簡単な@helperメソッドのシナリオ

 Razorの@helperにより、ビューテンプレートでの出力機能をカプセル化して、ヘルパーメソッドを簡単に再利用できます。コードのより良い再利用化ができ、より読みやすいコードにできます。では、@helper文法の使用法を示す非常に簡単なシナリオを見てみましょう。

@helperメソッドを定義する前のコード

 これは製品の詳細を示し、製品の価格が無償であれば『FREE!』と表示する簡単な製品一覧です。

 上記のコードは非常に直接的で、Razorの文法により、HTML内のC#コードと簡単に統合できます。

 価格に対するif/elseロジックの部分が、ちょっとややこしくなっています。サイト内(または同じページ内)のどこでも好きな場所に価格を出力できるため、上記のロジックがいろんな場所で重複すると、エラーになりやすく、保守も難しくなります。このようなシナリオは、抜き出し、@helper文法を使用してヘルパーメソッドの中へリファクタリングする、第一候補になります。

@helper文法を使用して上記のサンプルをリファクタリング

 では、価格出力ロジックを抜き出して、『DisplayPrice』という名前のヘルパーメソッドにカプセル化しましょう。これを行うには、以下のように、サンプルコードを書き直します。

 『DisplayPrice』という再利用可能なヘルパーメソッドを定義するために、上記の@helper文法を使用しました。標準のC#/VBメソッドと同じように、いくつでも引数を持つことができ、またNullableやOptionalの引数も定義可能です。標準のC#/VBメソッドと違うところは、@helperメソッドは、コンテンツとコードを両方持つことができ、その中でRazor文法をフルサポートします。これにより、ヘルパーメソッドの描画やフォーマット化を簡単に定義およびカプセル化できます。

 標準のC#およびVBメソッドのように、@helperメソッドを呼び出せます。

 メソッドが呼び出されると、Visual StudioはコードIntelliSenseを提供します。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト Chica(チカ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

バックナンバー

連載:Scott Guthrie氏 Blog翻訳

もっと読む

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5