添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

0. まえがき

本稿では、「Razor構文(C#)」についての基礎文法を簡潔にまとめる。「Razor構文、どう書くんだっけ?」という場合のリファレンスとして活用していただけるとうれしい(なお、本稿はエッセンスしか解説しておらず、すべてを学べるわけではないので、じっくり学ぶには「 連載:ASP.NET MVC入門【バージョン3対応】 第5回 新しいビュー・エンジン「Razor」の基本を理解しよう 」を参照してほしい)。

1. Razor構文(C#)の概要

Razor構文とは何か?

Razor構文(Razor syntax)とは、ASP.NET MVCや(WebMatrixで採用されている)ASP.NET WebページなどのWeb開発技術用のビュー・エンジンの1つである「Razorビュー・エンジン」向けの文法のことで、C#言語(.cshtmlファイル)用とVisual Basic言語(.vbhtmlファイル)用の2種類がある。

その構文は、クラシックASP(Active Server Pages)に近く、「HTMLページ内にRazor構文でコードを埋め込む」という開発スタイルである。ASP.NET Webフォームのコード・ナゲット(=「<% ... %>」という構文でプログラミング・コードを埋め込む方法)と比べて、タイプ量が少なく、シンプルな記述となるのが特徴だ。

【コラム】Razor構文を手軽に試せるサービス

Razor構文の挙動を確かめたいときには、「 Razor Do It 」というWeb上のサービスが便利だ。具体的には、以下の画面を参照されたい。

[Title]欄に今回の入力内容を表すタイトルを入力して
[Razor]欄にRazorコード(この例では「@DateTime.Now」)を含むHTMLコードを入力し、
コンボボックスから「cshtml」(=C#)を選択して、
[Execute]ボタンをクリックする

2. Razor構文(C#)の基礎文法

インライン式:単一のプロパティ/メソッド/フィールド変数の値の出力

Razor構文で、メソッドやプロパティ、フィールド変数などの値を、HTMLコードとして動的に出力したい場合には、それらの先頭に「@」を付けるだけである。

このようなインライン式の終了位置は、C#における識別子名として使えない文字の出現によって決まる(半角/全角スペースや「:」などの、「英数字・日本語文字」以外の文字のほとんどが区切りとなる。「.<英数字>」や「[」などはインライン式の一部と見なされる)。つまり下記のコード例では、「<」で始まるHTMLタグの前までがC#コードとなる。

@{int[] items = {1,2,3};}
@foreach (var item in items) {
<p>foreach文のループで処理される個別項目の値は「@item」です。</p>
@* whileコード・ブロック *@
@{var j = 0;}
@while (j < 3) {
<p>for文のループの「@j」回目です。</p>

そのほかの重要なRazor構文の機能:レイアウト/ヘルパー

Razor構文を使ううえで押さえておきたい機能がいくつかあるので、最後に簡単に紹介する。

1つは、共通のサイト・テンプレートを定義できる「レイアウト・ページ」である。詳しくは、「 “Razor”の紹介 − ASP.NET向け新ビュー・エンジン − @IT 」の「レイアウト/マスターページのシナリオ − 基礎」の節を参照されたい。

もう1つは、Webアプリケーションにさまざまな機能を付加してくれる「ヘルパー」である。詳しくは「 Razorビュー・エンジンとヘルパー、そしてWebMatrixの登場 − @IT 」の「NuGetとヘルパー・ライブラリの活用」の節や、「 第5回 新しいビュー・エンジン「Razor」の基本を理解しよう − @IT 」の「ビュー開発を効率化する『ビュー・ヘルパー』」の節を参照してほしい。また、ヘルパーを自作する場合には「@helper」で始まるコードを記述するが、詳しくは「 .NET開発の新標準「NuGet」入門(後編) − @IT 」の「NuGetパッケージの作成」の節を参照してほしい。 End of Article

「.NET開発『虎の巻』」
Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
    ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
    Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
    C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
    Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
  •