ASP.NET Razor - C# と VB コード文法

RazorはC#(Cシャープ)およびVB(Visual Basic)の両方をサポートしています。

C#の主要なRazor文法規則

  • Razorコードは@{ ... }で包装されます
  • 行内式(変数や関数)は@で始まります
  • コードステートメントはセミコロンで終わります
  • 文字列は引用符で囲まれています
  • C# コードは大文字小文字を区別します
  • C# ファイルの拡張子は .cshtml

C# インスタンス

<!-- 単一行コードブロック -->
@{ var myMessage =	"Hello World"; }
<!-- 行内式や変数 -->
<p>myMessageの値は: @myMessage</p> 
<!-- 多行ステートメントコードブロック -->
@{
var greeting = "Welcome to our site!";
var weekDay = DateTime.Now.DayOfWeek;
var greetingMessage = greeting + " Here in Huston it is: " + weekDay;
}
<p>挨拶は: @greetingMessage</p>

インスタンスを実行

VBの主要なRazor文法規則

  • Razorコードブロックは@Code ... End Codeで囲まれています
  • 行内式(変数や関数)は@で始まります
  • Dimキーワードで変数を宣言します
  • 文字列は引用符で囲まれています
  • VBは大文字小文字を区別しません
  • VBファイルの拡張子は .vbhtml

<!-- 単一行コードブロック -->
@Code dim myMessage = "Hello World" End Code
<!-- 行内式や変数 -->
<p>myMessageの値は: @myMessage</p> 
<!-- 多行ステートメントコードブロック -->
@Code
dim greeting = "Welcome to our site!" 
dim weekDay = DateTime.Now.DayOfWeek 
dim greetingMessage = greeting & " Here in Huston it is: " & weekDay
コード終了 
<p>挨拶は: @greetingMessage</p>

インスタンスを実行

どう動作しますか?

Razorは、ウェブページにサーバーサイドコードを埋め込むためのシンプルなプログラミング文法です。

Razor 语法はASP.NETフレームワークに基づいており、このフレームワークは、マイクロソフトの.NETフレームワークの一部で、特にWebアプリケーションの開発にデザインされたものです。

Razor 语法は、ASP.NETのすべての機能を提供しますが、シンプルな文法を使用しているため、初心者でも簡単に学びやすく、専門家でも生産性を高めるのに役立ちます。

Razor ページは、HTML コンテンツと Razor コードの両方を持つ HTML ページとして説明できます。

サーバーがこのようなページを読み取った後、HTML ページをブラウザに送信する前に、まず Razor コードを実行します。これらのサーバー上で実行されるコードは、ブラウザでは実行できないタスクを完了することができます。例えば、サーバーデータベースへのアクセスなどです。サーバーコードは、ページがブラウザに送信される前に動的な HTML コンテンツを作成できます。ブラウザから見ると、サーバーコードで生成された HTML は静的 HTML コンテンツと区別ができません。

Razor 言法を使用する ASP.NET ページは特別なファイルエクステンション cshtml(C# の Razor 言法を使用)または vbhtml(VB の Razor 言法を使用)を持っています。

オブジェクトと対処する方法

サーバーコードはよくオブジェクトに関与しています。

"Date" オブジェクトは典型的な ASP.NET 内蔵オブジェクトですが、自分でオブジェクトを定義することもできます。一つのウェブページ、テキストボックス、ファイル、データベースレコードなどがそれに該当します。

オブジェクトには実行できるメソッドも持つことができます。データベースレコードには「保存」メソッドがあり、画像オブジェクトには「回転」メソッドがあり、メールオブジェクトには「送信」メソッドなどがあります。

オブジェクトにはその特徴を説明する属性も持つことができます。データベースレコードには FirstName と LastName 属性があります。

ASP.NET Date オブジェクトは Now 属性(Date.Now として書かれる)を持ち、Now 属性には Day 属性(Date.Now.Day として書かれる)があります。以下の例では、Date オブジェクトの属性へのアクセス方法を示しています:

<table border="1">
<tr>
<th width="100px">Name</th>
<td width="100px">Value</td>
</tr>
<tr>
<td>Day</td><td>@DateTime.Now.Day</td>
</tr>
<tr>
<td>Hour</td><td>@DateTime.Now.Hour</td>
</tr>
<tr>
<td>Minute</td><td>@DateTime.Now.Minute</td>
</tr>
<tr>
<td>Second</td><td>@DateTime.Now.Second</td>
</tr>
</td>
</table>

インスタンスを実行

If と Else 条件

ダイナミックウェブページの重要な特性は、条件に基づいて実行するアクションを決定することです。

このポイントを実現する一般的な方法は if ... else 文を使うことです:

@{
var txt = "";
if(DateTime.Now.Hour > 12)
  {txt = "Good Evening";}
else
  {txt = "Good Morning";}
}
<html>
<body>
<p>メッセージは @txt</p>
</body>
</html>

インスタンスを実行

ユーザーの入力を読み取る

ダイナミックウェブページの重要な特性の1つはユーザーの入力を読み取ることです。

Request[]関数で入力を読み取り、IsPost条件でテストされます:

@{
var totalMessage = "";
if(IsPost)
    {
    var num1 = Request["text1"];
    var num2 = Request["text2"];
    var total = num1.AsInt() + num2.AsInt();
    totalMessage = "Total = " + total;
    }
}
<html>
<body style="background-color: beige; font-family: Verdana, Arial;">
<form action="" method="post">
<p><label for="text1">First Number:</label><br>
<input type="text" name="text1" /></p>
<p><label for="text2">Second Number:</label><br>
<input type="text" name="text2" /></p>
<p><input type="submit" value=" Add " /></p>
</form>
<p>@totalMessage</p>
</body>
</html>

インスタンスを実行