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#からDB接続でSQLServerに接続してSELECT文を実行する方法

<目次> (1) C#からDB接続する方法~SQLServerへの接続プログラム例もご紹介~  (1-1) 構文(DB接続)  (1-2) 構文(SELECT文発行)  (1-3) サンプルプログラム …

C#のIComparableの実装方法+IComparerとの違いについて

<目次> (1) C#のIComparableの実装方法+IComparerとの違いについて  (1-1) IComparableの概要とIComparableとの違い  (1-2) STEP0:比較 …

ASP.NETでビュー(View)に複数のモデル(Model)を連携する方法

  <目次> (1) ASP.NETでビュー(View)に複数のモデル(Model)を連携する方法  (1-1) やりたい事の整理  (1-2) ViewModelを使った複数モデルの連携 …

ASP.NET MVC(C#)でHelloWorldする手順

<目次> (1) ASP.NET MVC(C#)でHelloWorldする手順  (1-1) プロジェクトの作成  (1-2) Controller(コントローラー)の作成  (1-3) Veiw(ビ …

C#でNLogライブラリを用いてログ出力を行う方法

<目次> (1) C#でNLogライブラリを用いてログ出力を行う方法  (1-1) NLogの概要  (1-2) NLogの導入手順  (1-3) NLogの初期実装手順  (1-4) NLogのサン …

  • English (United States)
  • 日本語
Top