SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Scott Guthrie氏 Blog翻訳

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

連載:ScottGu's Blog翻訳

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

コラム

 本稿は、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を提供します。

次のページ
複数のビューで@helpersを再利用

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Scott Guthrie氏 Blog翻訳連載記事一覧

もっと読む

この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Scott Guthrie(Scott Guthrie)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5947 2011/05/25 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング