Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

ASP.NET C#

ASP.NETのRazor入門~Razorとは?や使い方をご紹介

投稿日:2021年8月6日 更新日:

<目次>

(1) ASP.NETのRazor入門~Razorとは?や使い方をご紹介
 (1-1) Razorとは?
 (1-2) 基本構文
 (1-3) サンプルプログラム

(1) ASP.NETのRazor入門~Razorとは?や使い方をご紹介

(1-1) Razorとは?

RazorはHTML(XML等も可)に対して、C#やVBのプログラムを埋め込んで、画面に対してプログラミングの「繰り返し(for)」や「分岐(if)」といった処理を可能にする機能で、Razorの事を「ビューエンジン」と呼んでいます。

(図111)Razorエンジンを用いたビューのイメージ

ASP.NETのビューエンジンとしては元々ASPXエンジンがありましたが、ASPXは<% … %>でコードを囲う記述が必要だったのに対して、Razorエンジンでは「@」を先頭に付けるだけでOKといった簡便さもあります。
 

(1-2) 基本構文

●「式の値」を埋め込む場合:「@…」

式の値を埋め込む場合は、埋め込むコードの先頭に「@」を付ける事で、HTML中にC#プログラムを埋め込む事ができます。この記述方法をコードナゲットと呼びます。
 
(例)連携されたModelのTextBookオブジェクトのNameプロパティの値を埋め込む
@Model.TextBook.Name
 
これをHTMLのタグ等と組み合わせてViewに表示します。

(例0)HTMLの<h2>タグで囲った例
<h2>@Model.TextBook.Name</h2>
 

●「複数行のコード」を埋め込む場合:「@{…}」

複数行のコードを埋め込む場合は、先頭の「@」の後ろにブロック「{ }」が続き、その中にコードを記述します。

(例1)ブロック
@{
    int price = 800;
    string message = Model.TextBook.Name + "は税込み" + price + "円です";
}
 
(例2)foreachブロック

@foreach (var school in Model.Schools)
{
    //# 処理
}
 
(例3)ifブロック

@if (Model.Schools.Count > 0)
{
    //# 処理
}
 
注意点として、先ほどの「@…」はあくまで「式の値」を埋め込むものなので、@{ViewBag.Title = “Home Index”;}のように式を埋め込む事が出来ません。

一方で「@{…}」は値の代入やメソッドの呼び出しといった処理を記述する事ができ、C#のプログラムを実際に埋め込んでいると感じるのはこちらかも知れません。

●ブロック内にHTMLを記述

また「@」で記述したコードの中に、逆にHTMLを含める事もできます(HTMLとC#が入り混じっていてもOK)。上の(例2)(例3)でいうと、次のような記述が可能です。

(例2+)
@foreach (var school in Model.Schools)
{
    //# ↓HTMLの<div>タグで「@school.Name」を画面表示
    <div>@school.Name</div>
}
 
(例3+)

@if (Model.Schools.Count > 0)
{
    //# ↓HTMLの<div>タグで下記文章を画面表示
    <div>@Model.Schools.Count 校が教科書「@Model.TextBook.Name」を使っています</div>
}

(1-3) サンプルプログラム

(Viewサンプル)
@model ViewModelTest.ViewModels.TextBookViewModel
(例1)ブロック
@{
    int price = 800;
    string message = Model.TextBook.Name + "は税込み" + price + "円です"; 
}
<div>教科書名:@Model.TextBook.Name</div>

<br />
(例2)foreachブロック
@foreach (var school in Model.Schools)
{
    //# 処理
    <div>@school.Name</div>
}

<br />
(例3)ifブロック
@if (Model.Schools.Count > 0)
{
    //# 処理
<div>@Model.Schools.Count 校が教科書「@Model.TextBook.Name」を使っています</div>
}

<div class="jumbotron">
    <h3>本文</h3>
    <p class="lead">あああああああ</p>
</div>
 
View以外の他の部分のサンプルコードは別記事で掲載しているものと全く同じなので、それぞれ下記リンクを辿ってコピペして頂けたらと思います。
 
(ViewModelサンプル)
 
(Controllerサンプル)
 
(Modelサンプル)
(実行結果)

目次にもどる 

Adsense審査用広告コード


Adsense審査用広告コード


-ASP.NET, C#

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

C#で見るgetやsetとは?プロパティの基礎についてご紹介

<目次> (1) C#で見るgetやsetとは?プロパティの基礎についてご紹介  (1-1) プロパティとは?  (1-2) プロパティの構文  (1-3) サンプルプログラム  (1-4) プロパテ …

Xamarin.Formsで画面遷移を実装する手順について+ソースコードも紹介

<目次> (1) Xamarin.Formsで画面遷移を実装する手順について  (1-1) 遷移先ページの追加  (1-2) 画面遷移ロジック追加   (1-2-1) ボタンコントロールの追加   ( …

ASP.NETのViewBagとは?構文やサンプルプログラムもご紹介

  <目次> (1) ASP.NETのViewBagとは?構文やサンプルプログラムもご紹介  (1-1) 概要  (1-2) 構文  (1-3) サンプルプログラム (1) ASP.NETの …

C#でフォルダ内のファイルの一覧を取得する方法

<目次> (1) C#でフォルダ内のファイルの一覧を取得する方法  (1-1) 方法①構文  (1-2) 方法①サンプルプログラム  (1-3) 方法②構文  (1-4) 方法②サンプルプログラム ( …

C#のIEnumerableとは?使い方(foreachでの要素取り出し)を順を追って解説

<目次> (1) C#のIEnumerableとは?使い方(foreachでの要素取り出し)を順を追って解説  (1-1) IEnumerableとは?  (1-2) IEnumerableの実装の流 …

  • English (United States)
  • 日本語
Top