Razor 構文を使用した ASP.NET Web プログラミングの概要 (C#) (2023)

Table of Contents
この記事の内容 ソフトウェアバージョン プログラミングのヒントトップ 8 1. @ 記号を使用してページにコードを追加します 2. コード ブロックを中かっこで囲みます。 3. ブロック内で、各コード ステートメントをセミコロンで終了します。 4. 変数を使用して値を格納する 5. リテラル文字列値を二重引用符で囲みます 6. コードは大文字と小文字を区別します 7. オブジェクトを含む多くのエンコーディング 8. 意思決定のためのコードを書く HTTP GET および POST メソッドと IsPost プロパティ 簡単なコード例 基本的なプログラミングの概念 Razor 構文、サーバー コード、および ASP.NET ASP.NET はどこに適合しますか? 基本構文 テキスト、マークアップ、およびコードをコード ブロックに結合する ファイル コード (およびマークアップ) コメント 変数 変数とデータ型 データ型の変換とテスト オペレーター コードでファイルとフォルダーのパスを操作する 仮想パスから物理パスへの変換: Server.MapPath メソッド 仮想ルートの参照: ~ 演算子と href メソッド 条件ロジックとループ 試験条件 シュライフェンコード オブジェクトとコレクション ページ オブジェクト コレクション オブジェクト (配列と辞書) パラメータを指定してメソッドを呼び出す エラー処理 try-catch ステートメント その他のリソース FAQs Videos
  • [記事]

トム・フィッツマッケン

この記事では、Razor 構文を使用した ASP.NET Web ページでのプログラミングについて紹介します。 ASP.NET は、Web サーバー上で動的な Web ページを実行するための Microsoft のテクノロジです。この記事では、C# プログラミング言語の使用に焦点を当てています。

研究内容:

  • Razor 構文を使用したプログラミング ASP.NET Web サイトのプログラミングに関する最も重要な 8 つのヒントの概要。
  • 基本的なプログラミングの概念が必要です。
  • サーバー コードと Razor 構文 ASP.NET に関するすべて。

ソフトウェアバージョン

  • ASP.NET Web ページ (Razor) 3

このチュートリアルは、ASP.NET Web ページ 2 でも機能します。

プログラミングのヒントトップ 8

このセクションには、Razor 構文を使用してサーバー コードを記述し始める前に知っておく必要がある ASP.NET のヒントが含まれています。

ノート

Razor 構文は、ASP.NET Web ページの最も一般的な言語である C# プログラミング言語に基づいています。ただし、Razor 構文は V​​isual Basic 言語もサポートしています。また、Visual Basic で可能なすべての機能もサポートしています。詳細については、ビジュアルを参照してください基本的な言語と構文の付録を参照してください。

これらのプログラミング手法の詳細については、この記事の後半で説明します。

1. @ 記号を使用してページにコードを追加します

このキャラクターは@、インライン式、単一ステートメント ブロック、および複数ステートメント ブロックを開始します。

<!-- 個々のステートメント ブロック -->@{ var total = 7; }@{ var myMessage = "Hello World"; }<!-- インライン式 --><p>アカウントの値: @total </p><p>myMessage の値: @myMessage</p><!-- 複数ステートメント ブロック - ->@{ var Greeting = "私たちのサイトへようこそ!"; var weekDay = DateTime.Now.DayOfWeek; var GreetingMessage = Greeting + "今日は: " + 曜日;}<p>あいさつ: @GreetingMessage</p>

ブラウザでページを実行すると、次のような指示が表示されます。

Razor 構文を使用した ASP.NET Web プログラミングの概要 (C#) (1)

チップ

HTMLコーディング

前の例のように、文字を次のように置き換えます@ASP.NET を使用してページにコンテンツを表示すると、出力は HTML エンコードされます。これにより、予約済みの HTML 文字 (および<>) は HTML タグまたは&エンティティとして解釈される代わりに、Web ページに文字として表示されるコードに置き換えられます。 HTML エンコーディングがないと、サーバー コードの出力が正しく表示されず、ページがセキュリティ リスクにさらされる可能性があります。

タグをマークアップとしてレンダリングする HTML マークアップ (例:<p></p>、かかとなど<em></em>テキスト (強調)。この記事の後半を参照してください。テキスト、マークアップ、およびコードをコード ブロックに結合するセクション。

HTML エンコーディングの詳細については、次を参照してください。仕事"を参照してください。

2. コード ブロックを中かっこで囲みます。

コードブロック中括弧で囲まれた 1 つ以上のコード ステートメントが含まれます。

<!-- 単一ステートメント ブロック。 -->@{ var theMonth = DateTime.Now.Month; }<p>現在の月の数値: @theMonth</p><!-- マルチステートメント ブロック。 -->@{var outsideTemp = 79; var weatherMessage = "こんにちは、" + outsideTemp + " 度です。";}<p>今日の天気: @weatherMessage</p>

ブラウザに表示される結果:

Razor 構文を使用した ASP.NET Web プログラミングの概要 (C#) (2)

3. ブロック内で、各コード ステートメントをセミコロンで終了します。

コード ブロック内では、各完全なコード ステートメントはセミコロンで終了する必要があります。インライン式はセミコロンで終わることはありません。

<!-- 単一ステートメント ブロック -->@{ var theMonth = DateTime.Now.Month; }<!-- 複数ステートメントのブロック -->@{ var outsideTemp = 79; var weatherMessage = "こんにちは、" + outsideTemp + " 度です。";}<!-- インライン式なので、セミコロンはありません --><p>今日の天気: @weatherMessage</p>

4. 変数を使用して値を格納する

文字列、数値、日付などが含まれます。変数に値を格納できます キーワードで新しい変数を作成します戦争.使用する@変数値をページに直接挿入できます。

<!-- 文字列の保存 -->@{ varwelcomeMessage = "Welcome, new members!"; }<p>@welcomeMessage</p><!-- 日付の格納 -->@{ var year = DateTime.Now.Year; }<!-- 変数を表示 --><p>@year に参加した新しいメンバーへようこそ!</p>

ブラウザに表示される結果:

Razor 構文を使用した ASP.NET Web プログラミングの概要 (C#) (3)

5. リテラル文字列値を二重引用符で囲みます

ラインテキストとして扱われる一連の文字です。文字列を指定するには、二重引用符で囲みます。

@{ var myString = "これは文字列リテラルです"; }

バックスラッシュ () または二重引用符 (\") が含まれている場合、演算子の前に逐語的な文字列リテラルフォン@使用する。 (C# では、リテラル文字列リテラルを使用しない限り、\ 文字は特別な意味を持ちます。)

<!-- 文字列にバックスラッシュを埋め込む -->@{ var myFilePath = @"C:\MyFolder\"; }<p>パスは次のとおりです: @myFilePath</p>

二重引用符を埋め込むには、リテラル文字列リテラルを使用して引用符を繰り返します。

<!-- 文字列に二重引用符を埋め込む -->@{ var myQuote = @"The person said: ""Hello, today is Monday."""; <p>@myquote</p>

これら 2 つの例を 1 つのページで使用した結果を次に示します。

Razor 構文を使用した ASP.NET Web プログラミングの概要 (C#) (4)

ノート

この@文字は、C# および ASP.NET ページのコードでリテラル文字列リテラルをマークするために使用されます。

6. コードは大文字と小文字を区別します

C# では、キーワードは (戦争正しい, ,) および変数名は大文字で表記され、もしも大文字と小文字に注意してください。次のコード行姓、姓2 つの異なる変数を作成します。苗字、苗字。

@{ var lastname = "スミス"; var lastname = "ジョーンズ";}

変数var lastname = "スミス";ページを宣言します@姓、姓この変数を参照しようとすると「鍛冶屋」ワート「ジョーンズ」が得られます。

ノート

Visual Basic では、キーワードと変数は大文字と小文字が区別されます。なりません

7. オブジェクトを含む多くのエンコーディング

物体A は、ページ、テキスト ボックス、ファイル、画像、Web リクエスト、電子メール メッセージ、顧客レコード (データベース行)、またはプログラムで利用できるその他のものです。オブジェクトには、そのプロパティを説明するプロパティがあり、読み取りまたは変更できます。テキストボックスオブジェクトを持っています文章Request オブジェクトが持つプロパティ (特に)URL電子メール メッセージのプロパティフォンプロパティ、顧客オブジェクトにはプロパティがありますファーストネーム.オブジェクトには、実行可能な「動詞」であるメソッドもあります。たとえば、ファイルオブジェクトの場合パソコンに保存画像オブジェクトのメソッド回転する・メールオブジェクトのメソッドあなたから方法など

オブジェクトはしばしば問い合わせ仕事。このオブジェクトは、ページ上のテキスト フィールド (フォーム フィールド) の値、リクエストを行ったブラウザの種類、ページの URL、ユーザー ID などの情報を提供します。次の例は、問い合わせプロパティとオブジェクトへのアクセス問い合わせメソッドを呼び出すマップ パス方法を示します。このメソッドは、サーバー上のページの絶対パスを提供します。

<table border="1"><tr> <td>リクエストされた URL</td> <td>相対パス</td> <td>フル パス</td> <td>HTTP リクエスト タイプ</td></ tr><tr> <td>@Request.Url</td> <td>@Request.FilePath</td> <td>@Request.MapPath(Request.FilePath)</td> <td>@Request.RequestType </td></tr></table>

ブラウザに表示される結果:

Razor 構文を使用した ASP.NET Web プログラミングの概要 (C#) (5)

8. 意思決定のためのコードを書く

動的 Web ページの重要な機能は、条件に基づいて何を行うかを決定できることです。これを行う最も一般的な方法は、もしもステートメント(およびオプションアンダース表現)。

@{ var 結果 = ""; if(IsPost) { result = "このページは送信ボタンを使用して投稿されました。"; } else { result = "これは、このページに対する最初のリクエストです。"; }}<!DOCTYPE html><html> <head> <title></title> </head><body><form method="POST" action="" > <input type="Submit" name="Submit " value="送信"/> <p>@result</p></form></body></html>

表現if(IstPost)簡単な説明ですif(IstPost == true)なくなった。声明 &もしも一緒に、条件をテストしたり、コードのブロックを反復したりするための多くの方法があります。詳細については、この記事の後半で説明します。

ブラウザに表示される結果 ([あなたから]):

Razor 構文を使用した ASP.NET Web プログラミングの概要 (C#) (6)

(Video) ASP.NET Core の Razor ページ - フル コース (.NET 6)

チップ

HTTP GET および POST メソッドと IsPost プロパティ

Web ページに使用されるプロトコル (HTTP) には、サーバーへの要求を行うために使用されるメソッド (動詞) のセットが非常に限られています。最も一般的なのは、ページの読み取りに使用される GET と、ページの送信に使用される POST です。ユーザーが初めてページを要求するときは、一般に GET で要求されます。ユーザーがフォームに入力して送信ボタンをクリックすると、ブラウザーは POST 要求をサーバーに送信します。

Web プログラミングでは、ページの処理方法を知るために、ページが GET または POST として要求されているかどうかを知ることは役に立ちます。このプロパティを ASP.NET Web ページに設定しますIsPostリクエストが GET か POST かを確認するために使用できます。リクエストが POST の場合、IsPostプロパティは true を返し、たとえば、フォームのテキスト ボックスの値を読み取ることができます。多くの場合、ページの値IsPostに応じてページがどのように処理されるかを示します。

簡単なコード例

この手順では、基本的なプログラミング手法を示すページを作成する方法を示します。この例では、ユーザーが 2 つの数字を入力して追加し、結果を確認できるページを作成します。

  1. エディターで新しいファイルを作成し、AddNumbers.cshtml という名前を付けます

  2. 次のコードとマークアップをページにコピーして、既にページにあるものを置き換えます。

    @{変数合計= 0; var totalMessage = ""; if(IsPost) { // ユーザーが入力した数値を取得します。 var num1 = request["text1"]; var num2 = Request["text2"]; // 入力文字列を整数に変換して加算します。合計 = num1.AsInt() + num2.AsInt(); totalMessage = "合計 = " + 合計; }}<!DOCTYPE html><html lang="en"> <head> <title>数字を追加</title> <meta charset="utf-8" /> <style type="text/css"> body {背景色: ベージュ;フォント ファミリー: Verdana、Arial。ボーダー: 50px; }形状{パディング:10px;フレームのスタイル: 無地; width: 250px;} </style> </head><body> <p>2 つの整数を入力し、[<strong>追加</strong>] をクリックします。</p> <form action="" method ="post" > <p><label for="text1">最初の番号:</label> <input type="text" name="text1" /> </p> <p><label for="text2 ">2番目の番号: </label> <input type="text" name="text2" /> </p> <p><input type="submit" value="Add" /></p> </ form> <p> @totalMessage</p></body></html>

    考慮すべき点は次のとおりです。

    • このキャラクターは@、ページのコードの最初のブロックを開始し、ページの下部にある埋め込み変数の前に配置します。合計メッセージこれを使って
    • ページ上部のブロックは中括弧で囲まれています。
    • 一番上のブロックでは、すべての行がセミコロンで終わります。
    • 変数合計数値1、、数値2合計メッセージ複数の数値と文字列を格納します。
    • 変数に合計メッセージ割り当てられたリテラル文字列値は、二重引用符で囲みます。
    • コードでは大文字と小文字が区別されるため、ページの下部で変数を使用すると合計メッセージ、その名前はトップ変数と正確に一致する必要があります。
    • この表現num1.AsInt() + num2.AsInt()オブジェクトとメソッドの操作方法を示します。各変数のメソッドはAsIntは、ユーザーが入力した文字列を数値 (整数) に変換して、算術演算を実行できるようにします。
    • ラベルを持っている<フォーム>属性はメソッド="投稿"を含む。これにより、ユーザーは添加剤] を使用して、HTTP POST メソッドを使用してページをサーバーに送信します。ページが送信されたときif(IstPost)テストが真になり、条件コードが実行され、数値を加算した結果が表示されます。
  3. ページを保存し、ブラウザで実行します。 (ページを実行する前に、[ファイル] ワークスペースが選択されています)。 2 つの整数を入力して [添加剤] クノップ。

    Razor 構文を使用した ASP.NET Web プログラミングの概要 (C#) (7)

基本的なプログラミングの概念

この記事では、ASP.NET Web プログラミングの概要を説明します。これは完全な調査ではありませんが、最も一般的に使用されるプログラミング概念の簡単な概要です。それでも、ASP.NET Web ページの使用を開始するために必要なほとんどすべてをカバーしています。

しかし、最初に、少し技術的な背景を説明します。

Razor 構文、サーバー コード、および ASP.NET

Razor 構文は、サーバーベースのコードを Web ページに埋め込むための単純なプログラミング構文です。 Razor 構文を使用する Web ページには、クライアント コンテンツとサーバー コードの 2 種類のコンテンツがあります。クライアント コンテンツは、Web サイトで慣れているものです。 HTML マークアップ (要素)、CSS などのスタイル情報、JavaScript などのクライアント スクリプト、プレーン テキストなど。

Razor 構文を使用して、このクライアント コンテンツにサーバー コードを追加できます。ページにサーバー コードがある場合、サーバーはまずそのコードを実行してから、ページをブラウザーに送信します。サーバー上で実行すると、コードは、クライアント コンテンツのみを使用する場合に、次のような非常に複雑なタスクを実行できます。 B. サーバーベースのデータベースへのアクセス。最も重要なことは、サーバー コードがクライアント コンテンツを動的に作成できることです。 HTML マークアップやその他のコンテンツをオンザフライで生成し、ページに含まれる静的 HTML と共にブラウザーに送信できます。ブラウザーの観点からは、サーバー コードによって生成されたクライアント コンテンツは、他のクライアント コンテンツと何ら変わりはありません。前述のとおり、必要なサーバー コードは非常に単純です。

Razor 構文を使用する ASP.NET Web ページには、特別なファイル拡張子 (.cshtmlまた.vbhtml) がある。サーバーはこれらの拡張機能を検出し、Razor 構文でマークされたコードを実行して、ページをブラウザーに送信します。

ASP.NET はどこに適合しますか?

Razor 構文は、ASP.NET と呼ばれる Microsoft のテクノロジに基づいており、Microsoft .NET Framework 上に構築されています。 .NET Framework は、事実上あらゆる種類のコンピュータ アプリケーションを開発するための Microsoft の大規模で包括的なプログラミング フレームワークです。 ASP.NET は、Web アプリケーションの構築専用に設計された .NET Framework の一部です。開発者は、ASP.NET を使用して、世界最大かつ最もアクセス数の多い Web サイトの多くを作成してきました。 (Web サイトの URL の一部としてのファイル名拡張子.aspxサイトが ASP.NET で記述されていることを示しています)。

Razor 構文を使用すると、ASP.NET のすべての機能を利用できますが、単純化された構文により、初心者は簡単に習得でき、専門家はより生産的になります。この構文は簡単に使用できますが、ASP.NET と .NET Framework のファミリー関係は、Web サイトがより洗練されたものになるにつれて、より大きなフレームワークの力を活用できることを意味します。

Razor 構文を使用した ASP.NET Web プログラミングの概要 (C#) (8)

チップ

クラスとインスタンス

ASP.NET サーバー コードは、クラスの概念に基づいて構築されたオブジェクトを使用します。クラスは、オブジェクトの定義またはテンプレートです。たとえば、アプリケーションに必要な情報が含まれている場合がありますできるプロパティとメソッドを定義するクラスを含めることができます。

アプリケーションが実際の顧客情報を操作する必要がある場合、顧客オブジェクトのインスタンスを作成します (またはインスタンス化) 行う。個々の顧客はクラス固有ですできるはインスタンスです。各インスタンスは同じプロパティとメソッドをサポートしますが、各クライアント オブジェクトは一意であるため、通常、各インスタンスは異なるプロパティ値を持ちます。プロパティは顧客オブジェクトにあります姓、姓「スミス」かもしれません。プロパティは別の顧客オブジェクトにあります姓、姓「ジョーンズ」かもしれません。

同様に、個々の Web ページは Web サイト内にあります。本のページクラス本のページインスタンスであるオブジェクト。サイドのボタンクノップクラスクノップインスタンスであるオブジェクトなど。各インスタンスには独自のプロパティ セットがありますが、それらはすべて、オブジェクトのクラス定義で指定された内容に基づいています。

基本構文

上記では、ASP.NET Web ページを使用してページを作成し、HTML マークアップにサーバー コードを追加する方法の簡単な例を見てきました。 Razor 構文 (プログラミング言語の規則) を使用して ASP.NET サーバー コードを記述する基本について説明します。

プログラミングの経験がある場合 (特に、C、C++、C#、Visual Basic、または JavaScript を使用したことがある場合)、ここで読んだ内容の多くに精通しているでしょう。 .cshtmlファイル マークアップにサーバー コードを追加する方法を理解する必要があるだけです。

テキスト、マークアップ、およびコードをコード ブロックに結合する

多くの場合、サーバー コード ブロックは、ページ上にテキストまたはマークアップ (またはその両方) をレンダリングする必要があります。サーバー コード ブロックに含まれるテキストがコードではなく、代わりに変更せずにレンダリングする必要がある場合、ASP.NET はそのテキストをコードと区別できる必要があります。これにはいくつかの可能性があります。

  • 以下のように<p></p><em></em>テキストを HTML 要素で囲みます。

    @if(IsPost) { // この行には、一致する <p> タグ間のすべてのコンテンツが含まれます。 <p>こんにちは、時間は @DateTime.Now で、このページはポストバックです!</p>} else { // 一致するタグの間にあるすべてのコンテンツの後にサーバー コードが続きます。 <p>こんにちは<em>見知らぬ人</em>、今日は: <br /> </p> @DateTime.Now}

    HTML 要素には、テキスト、追加の HTML 要素、およびサーバー コード式を含めることができます。開いている ASP.NET HTML タグが表示される場合 (例)<p>要素とそのコンテンツを含むすべてがブラウザで変更されずにレンダリングされ、サーバー コード式が解決されます。

  • @:演算子または要素<テキスト>使用する。飛行機@:テキストまたは一致しない HTML タグを含む 1 行のコンテンツを出力します。アイテムは<テキスト>複数行の出力を含めます。これらのオプションは、HTML 要素を出力の一部としてレンダリングしたくない場合に便利です。

    @if(IsPost) { // プレーン テキストの後に、一致しない HTML タグとサーバー コードが続きます。 @: The time is: <br /> @DateTime.Now <br/> // サーバー コード、プレーン テキスト、一致するタグ、その他のテキスト。 @DateTime.Now @:<em>現在</em>の時刻です。}

    複数行のテキストまたは一致しない HTML タグを出力する場合は、各行にプレフィックスを付けます@:または行ごとに<テキスト>取り囲むことができます。オペレーターも@:<テキスト>タグは ASP.NET でテキスト コンテンツを識別するために使用され、ページ出力には表示されません。

    @if(IsPost) { // 前の例を繰り返しますが、<text> タグを使用します。 <text> The time is: <br /> @DateTime.Now <br/> @DateTime.Now は <em>現在</em> の時間です。 </text>}@{ var minTemp = 75; <text>今日は @DateTime.Now.ToString("MMMM") の月で、<em>素晴らしい</em> 日です! <br /><p>@minTemp 度以上であれば泳げます。 </p></text>}

    最初の例は前のものを繰り返しますが、<テキスト>タグを使用して、レンダリングするテキストを囲みます。 2 番目の例では、タグは and です。</テキスト>ラベルは<テキスト>囲まれていないテキストと一致しない HTML タグを含む 3 行で囲まれています (<br />) およびサーバー コードに一致する HTML タグ。繰り返しますが、各行の前に演算子を付けます@:別々に取り付けることもできます。どちらの方法も機能します。

    ノート

    HTML 要素、演算子、@:または要素を使用してテキストを配置します<テキスト>出力では、ASP.NET は出力を HTML にエンコードしません。 (前述のように、このセクションで説明する特殊なケースを除いて、ASP.NET では@サーバーコード式とサーバーコードブロックの出力をエンコードします)。

ファイル

ステートメント内 (および文字列リテラルの外側) にスペースを追加しても、ステートメントには影響しません。

@{ var lastname = "スミス"; }

ステートメント内の改行はステートメントに影響を与えず、読みやすくするために折り返すことができます。次の 2 つのステートメントは、同じ結果を生成します。

@{ var theName ="Schmied"; }@{ var personName = "スミス" ;}

ただし、文字列リテラルの途中で改行することはできません。以下の例は機能しません。

@{ var test = "これは長い文字列です"; } // それは動作しません!

上記のコードのように、複数の行に折り返される長い文字列を結合するには、2 つのオプションがあります。連結演算子 (+) 使えます。この演算子については、この記事の後半で説明します。記事上で@前述のように、この文字を使用してリテラル文字列リテラルを作成することもできます。リテラル文字列リテラルは行間で区切ることができます。

@{ var longString = @"これは長い文字列です";}

コード (およびマークアップ) コメント

コメントを使用すると、自分や他の人のためにメモを残すことができます。また、無効にします (コメントアウト) あなたもすることができます。

Razor コードと HTML マークアップのコメント構文は異なります。他の Razor コードと同様に、Razor コメントは、ページがブラウザーに送信される前にサーバー上で処理 (削除) されます。そのため、Razor のコメント構文を使用すると、コードにコメントを入れることができ (またはマークアップに入れることもできます)、ファイルを編集するときにコメントが表示されますが、ユーザーはページ ソースでそれらを見ることさえできません。

ASP.NET Razor のコメントについては、コメントしてください@*始まりと終わり*@行う。コメントは 1 行以上に指定できます。

@* 1 行のコード コメント。 *@@* これは複数行のコード コメントです。何行でも続けられます。**@

コード ブロック内のコメントは次のとおりです。

@{ @* これはコメントです。 *@ var theVar = 17;}

以下は、実行されないようにコード行をコメントアウトした同じコード ブロックです。

@{ @* これはコメントです。 *@ @* var theVar = 17; *@}

コード ブロック内では、Razor コメント構文の代わりに、プログラミング言語 (C# など) のコメント構文を使用できます。

@{ // これはコメントです。 var myVar = 17; /* これは、C# コメント構文を使用した複数行のコメントです。 */}

C# では、1 行のコメントの前に///文字による複数行コメントの開始/*そして終わり*/(Razor コメントと同様に、C# コメントはブラウザーでレンダリングされません)。

ご存じのとおり、マークアップ用の HTML コメントを作成できます。

<!-- これはコメントです。 -->

HTML コメントはテキストです<!--始まりの終わり-->.HTML コメントを使用すると、テキストだけでなく、ページに残しておきたいがレンダリングしたくない HTML マークアップも含めることができます。この HTML コメントは、タグの内容全体とそれに含まれるテキストを非表示にします。

(Video) Blazorの概要を解説する【C#でWebアプリがつくれる】

<!-- <p>これは私の段落です。</p> -->

Razor コメントとは異なり、HTML コメントは義歯ページにレンダリングされ、ユーザーはページのソースを表示することで表示できます。

Razor には、C# のネストされたブロックに関する制限があります。詳細については、次を参照してください。名前付き C# 変数とネストされたブロックを使用してバグのあるコードを生成する「参照してください。

変数

変数は、データを格納するために使用される名前付きオブジェクトです。変数には任意の名前を付けることができますが、名前は文字で始める必要があり、スペースや予約文字を含めることはできません。

変数とデータ型

変数は、変数が格納するデータの種類を示す特定のデータ型を持つことができます。文字列値を格納する文字列変数 (例: "Hello World")、整数値を格納する整数変数 (例: 3 と 79)、日付値をさまざまな形式 (2012 年 4 月 12 日または 2009 年 3 月 12 日) で格納する日付変数)。他の多くのデータ型も利用できます。

ただし、通常は変数の型を指定する必要はありません。ほとんどの場合、ASP.NET は変数のデータを使用して型を判別できます。 (場合によっては、タイプを指定する必要があります。これが適用される例が表示されます。)

(美術戦争指定されていない場合)、または型の名前を使用して、キーワードで変数を宣言します。

@{ // 文字列を変数に割り当てます。 var Greeting = "ようこそ!"; // 変数に数値を割り当てます。 var theCount = 3; // 式を変数に割り当てます。 var MonthlyTotal = theCount + 5; // 変数に日付値を割り当てます。 var 今日 = DateTime.Today; // 現在のページの URL を変数に割り当てます。 var myPath = this.Request.Url; // 明示的なデータ型で変数を宣言します。文字列名 = "ジョー"; int カウント = 5; DateTime 明日 = DateTime.Now.AddDays(1);}

次の例は、Web ページでの変数の一般的な使用法を示しています。

@{ // HTML マークアップに変数の値を埋め込みます。 <p>@greeting, friends!</p> // 変数をインライン式の一部として使用。 <p>予測年間合計: @(monthlyTotal * 12)</p> // ページの URL を変数で表示します。 <p>このページの URL: @myPath</p>}

前の例を 1 つのページに結合すると、ブラウザーでレンダリングされます。

Razor 構文を使用した ASP.NET Web プログラミングの概要 (C#) (9)

データ型の変換とテスト

ASP.NET は通常、データ型を自動的に判別できますが、そうでない場合もあります。したがって、明示的な変換によって ASP.NET をサポートする必要がある場合があります。型を変換する必要がない場合でも、使用しているデータの種類をテストすると便利な場合があります。

最も一般的なケースは、文字列を別の型に変換する必要がある場合です。 B. 整数または日付。次の例は、文字列を数値に変換する必要がある一般的なケースを示しています。

@{変数合計= 0; if(IsPost) { // ユーザーが入力した数値を取得します。 var num1 = request["text1"]; var num2 = Request["text2"]; // 入力文字列を整数に変換して加算します。合計 = num1.AsInt() + num2.AsInt(); }}

ユーザー入力は通常、文字列として表されます。ユーザーが数値の入力を求められて数値を入力する場合でも、ユーザー入力が送信されてコードで読み取られる場合でも、データは文字列形式です。したがって、文字列を数値に変換する必要があります。この例では、値を変換せずに算術演算を実行しようとすると、次のエラーが発生します。ASP.NET は 2 つの文字列を追加できないためです。

タイプ 'string' を暗黙的に 'int' に変換することはできません

メソッドを使用して値を整数に変換しますAsInt電話。変換が成功すると、数字を追加できます。

次の表に、一般的な変数の変換とテストの方法を示します。

方法

説明

AsInt()、IsInt()

整数を表す文字列 ("593" など) を整数に変換します。

var myIntNumber = 0;var myStringNum = "539";if(myStringNum.IsInt()==true){ myIntNumber = myStringNum.AsInt();}

AsBool()、IsBool()

「true」や「false」などの文字列をブール値に変換します。

var myStringBool = "True" var myVar = myStringBool.AsBool();

AsFloat()、IsFloat()

「1.3」や「7.439」などの 10 進数値の文字列を浮動小数点数に変換します。

var myStringFloat = "41.432895"; var myFloatNum = myStringFloat.AsFloat();

AsDecimal()、IsDecimal()

「1.3」や「7.439」などの 10 進数値の文字列を 10 進数に変換します。 (ASP.NET では、浮動小数点数よりも 10 進数の方が正確です)。

var myStringDec = "10317.425" var myDecNum = myStringDec.AsDecimal();

AsDateTime()、IsDateTime()

日付と時刻の値を表す ASP.NET 文字列予定時間タイプに変換

var myDateString = "12/27/2012" var newDate = myDateString.AsDateTime();

ToString()

他のデータ型を文字列に変換します。

int num1 = 17;int num2 = 76;// myString は 1776 に設定されます string myString = num1.ToString() + num2.ToString();

オペレーター

演算子は、ASP.NET が式で実行するコマンドの種類を指定するキーワードまたは文字です。 C# 言語 (およびそれが構築されている Razor 構文) は多くの演算子をサポートしていますが、最初に知っておく必要があるのはいくつかの演算子だけです。次の表は、最も一般的な演算子をまとめたものです。

[オペレーター]

説明

使用事例

+ - * /

数値式で使用される算術演算子。

@(5 + 13)@{ var netWorth = 150000; }@{ var newTotal = netWorth * 2; }@(新しい合計 / 2)

=

割り当て。ステートメントの右側の値を左側のオブジェクトに割り当てます。

私たちの。祭壇 = 17;

==

等しい。価値正しいそれらが等しい場合に返します。 (オペレーターと==オペレーターの=違いに注意してください)。

(Video) ASP.NET MVC5によるWEBアプリケーション入門①(WEBアプリケーションを作ってみる1)

var myNum = 15;if (myNum == 15) { // 何かを行う。}

!=

不平等。価値正しい等しくない場合は返します。

var theNum = 13; if (theNum != 15) { // 何かをする。}

< > <= >=

より小さい、より大きい、より小さいか等しい、より大きいか等しい。

if (2 < 3) { // 何かをする。}var currentCount = 12;if(currentCount >= 12) { // 何かをする。}

+

ショートカット。文字列の連結に使用されます。 ASP.NET は、式のデータ型に基づいて、この演算子と加算演算子の違いを認識します。

// 表示される結果は "abcdef".@("abc" + "def")

+= -=

変数に (それぞれ) 1 を加算および減算するインクリメントおよびデクリメント演算子。

int theCount = 0;theCount += 1; // count に 1 を加算

.

点。オブジェクトとそのプロパティおよびメソッドを区別するために使用されます。

var myUrl = Request.Url; var count = Request["Count"].AsInt();

()

ブラケット。式をグループ化し、パラメーターをメソッドに渡すために使用されます。

@(3 + 7)@Request.MapPath(Request.FilePath);

[]

ブラケット。配列またはコレクション内の値にアクセスするために使用されます。

var 収入 = Request["AnnualIncome"];

!

いいえ。価値正しくありませんフォン正しい振り向く。およびその逆。いつもの、(正しくありませんつまり、テストしないでください正しい) の省略形として使用されます。

bool taskCompleted = false;// Processing.if(!taskCompleted) { // 処理を続行}

&& ||

論理 AND および OR。条件をリンクするために使用します。

bool myTaskCompleted = false;int totalCount = 0;// Processing.if(!myTaskCompleted && totalCount < 12) { // 処理を続行します。}

コードでファイルとフォルダーのパスを操作する

多くの場合、コード内でファイルとフォルダーのパスを操作します。開発用コンピューターに表示される Web サイトの物理フォルダー構造の例を次に示します。

C:\WebSites\MeineWebSite default.cshtml datafile.txt \images Logo.jpg \styles Styles.css

URL とパスに関する重要な詳細を次に示します。

  • URL は、ドメイン名 () またはサーバー名 (http://www.beispiel.comhttp://localhosthttp://meincomputer)。
  • URL は、ホスト コンピューター上の物理パスに対応します。例えば、http://メインサーバーサーバー上C:\websites\meinewebsiteフォルダーを一致させることができます。
  • 仮想パスは、完全なパスを指定しないコード内のパスの省略形です。これには、ドメインまたはサーバー名に続く URL の部分が含まれます。仮想パスを使用すると、パスを更新することなく、コードを別のドメインまたはサーバーに移動できます。

違いを理解するのに役立つ例を次に示します。

完全な URLhttp://mycompanyserver/humanresources/CompanyPolicy.htm
サーバーネーム私の会社のサーバー
【仮想パス】/humanresources/CompanyPolicy.htm
物理的な方法C:\mywebsites\humanresources\CompanyPolicy.htm

仮想ルートは、C: ドライブのルートと同様に / です。 (仮想フォルダ パスは常にスラッシュを使用します)。フォルダの仮想パスは、物理フォルダと同じ名前である必要はありません。エイリアスを指定できます。 (運用サーバーでは、仮想パスが正確な物理パスと一致することはめったにありません)。

コードでファイルとフォルダーを操作する場合、操作しているオブジェクトに応じて、物理パスと仮想パスを参照する必要がある場合があります。 ASP.NET にはツール (メソッド、演算子、フレフ方法)Server.MapPath供給される。

仮想パスから物理パスへの変換: Server.MapPath メソッド

この方法はServer.MapPath、仮想パス (/default.cshtml) への絶対物理パス (C:\WebSites\MyWebSiteFolder\default.cshtmlなど) 完全な物理パスが必要な場合は、この方法を使用します。一般的な例は、Web サーバー上のテキストまたは画像ファイルの読み取りまたは書き込みです。

通常、ホスティング サイトのサーバー上のサイトの絶対物理パスがわからないため、この方法を使用して、既知のパス (仮想パス) をサーバー上の対応するパスに変換できます。ファイルまたはフォルダーへの仮想パスをメソッドに渡すと、物理パスが返されます。

@{ var dataFilePath = "~/dataFile.txt";}<!-- 物理パスを表示 C:\Websites\MyWebSite\datafile.txt --><p>@Server.MapPath(dataFilePath)</p>

仮想ルートの参照: ~ 演算子と href メソッド

.cshtmlまた.vbhtmlファイルで、演算子を使用して仮想ルート パスを指定します。参照できます。これは、サイト内でページを移動でき、他のページのリンクを壊さないようにすることができるため、非常に便利です.ウェブサイトを別の場所に移動するときにも便利です。ここではいくつかの例を示します。

@{ var myImagesFolder = "~/Bilder"; var myStyleSheet = "~/styles/StyleSheet.css";}

ウェブサイト用http://myserver/myappASP.NET がページの実行時にこれらのパスを処理する方法を次に示します。

  • マイピクチャ フォルダ:http://myserver/myapp/images
  • マイスタイルシート:http://myserver/myapp/styles/Stylesheet.css

(実際には、これらのパスは変数値として表示されませんが、ASP.NET はそれらを同じように扱います)。

このオペレーターは、サーバー コード (上記のように) とマークアップの両方で使用できます。このようになります。

<!-- ASP.NET Web ページのマークアップで ~ 演算子を使用する例 --><a href="~/Default">ホーム</a><img src="~/images/MyImages.png " / >

マークアップでは、演算子を次のように置き換えることができます画像ファイル、他の Web ページ、CSS ファイルなどのリソースへのパスを作成するために使用されます。ページが実行されると、ASP.NET はページ (コードとマークアップの両方) を調べ、すべてを実行します。参照を解決します。

条件ロジックとループ

ASP.NET サーバー コードを使用すると、タスクを条件付きで実行し、指定した回数だけステートメントを繰り返すコード (つまり、ループするコード) を記述できます。

試験条件

単純な条件をテストするには、追加しますもしもtrue または false ベースを返すステートメントを使用する

@{ var showToday = true; if(showToday) { @DateTime.Today; }}

キーワードはもしもスタートブロック。実際のテスト (条件) は括弧で囲まれ、true または false を返します。テストが真の場合に実行されるステートメントは、中かっこで囲まれています。もしもステートメントには、条件が false の場合に実行されるステートメントを指定するブロックが含まれます。アンダースあなたは始めることができます

@{ var showToday = false; if(showToday) { @DateTime.Today; } else { <text>ごめんなさい!</text> }}

ブロックによる複数の条件そうでなければ追加できます。

@{ var theBalance = 4.99; if(theBalance == 0) { <p>残高がありません。</p> } else if (theBalance > 0 && theBalance <= 5) { <p>$@theBalance の残高が非常に少なくなっています。</ p > } else { <p>残高: $@theBalance</p> }}

この例では、if ブロックの最初の条件が true でない場合、そうでなければ条件がチェックされます。この条件が満たされた場合、ブロック内でそうでなければ命令が実行されます。いずれの条件も満たさない場合、アンダース命令が実行されます。 if ブロックを好きなだけ追加し、ブロックを次のように置き換えます。アンダース「その他すべて」の条件と同様に閉じます。

多数の条件をテストするには、ブロックを追加しますスイッチ使用する。

@{ var weekday = "水曜日"; var greeting = ""; switch(weekday) { case "Monday": Greeting = "Ok, 今日は素晴らしい月曜日です";壊す; case "Tuesday": greeting = "素晴らしい火曜日です";壊す; case "水曜日": greeting = "野生の水曜日がやってきた!";壊す; default: Greeting = "それはまた別の日です。";壊す; } <p>今日は @weekday なので、今日のメッセージは @greeting です</p>}

テストする値は括弧で囲みます (この例では、変数平日)。個別テストではコロン (:) で終わるステートメントを使用します。声明値がテスト値と一致する場合、ブロックのコードが実行されます。各ケースステートメントはステートメントです壊す近い。 (みんなブロックにブレークを含めるのを忘れた場合:命令も実行されます)。スイッチブロックにはしばしば元は、「その他すべて」オプションの最後のケースとしてステートメントを含み、他のケースのいずれも適用されない場合に実行されます。

(Video) ASP.NET Core シリーズ: MVC と Razor ページ

ブラウザーに表示された最後の 2 つの条件付きブロックの結果:

Razor 構文を使用した ASP.NET Web プログラミングの概要 (C#) (10)

シュライフェンコード

多くの場合、同じステートメントを繰り返し実行する必要があります。このループを実行するには たとえば、データ コレクション内の各要素に対して同じステートメントを実行することがよくあります。ループする回数が正確にわかっている場合は、ループできますプロに使える。このタイプのループは、カウントアップまたはカウントダウンに特に役立ちます。

@for(var i = 10; i < 21; i++){ <p>Zeile #: @i</p>}

ループがキーワードプロ括弧で囲まれた 3 つのステートメントで始まり、それぞれがセミコロンで終了します。

  • 括弧内は最初のステートメント (ここで、i = 10;) カウンターを作成し、10 番目のカウンターに初期化します。言及する必要はありません。任意の変数を使用できます。ループはプロ実行中、カウンターは自動的にインクリメントされます。
  • 2 番目のステートメント (私は21歳未満です。) カウントする距離条件を指定します。この場合、20 に移動する必要があります (つまり、カウンターが 21 未満の間続行します)。
  • 3 番目のステートメント (i++) はインクリメント演算子を使用します。これは、ループが実行されるたびにカウンタが 1 ずつ増加するように指定しているだけです。

中括弧内は、ループの各反復で実行されるコードです。マークアップは新しい段落 (<p>要素) と作成 (カウンター)値を示す行を出力に追加します。このページを実行すると、11 行の出力が生成され、それぞれに項目番号を識別するテキストが含まれます。

Razor 構文を使用した ASP.NET Web プログラミングの概要 (C#) (11)

コレクションや配列を操作するとき、それらをループしたいことがよくありますすべてのための使用する。コレクションは類似したオブジェクトのグループですすべてのための、ループにより、コレクション内の各アイテムに対してタスクを実行できます。このタイプのループは、ループとは異なりますプロこれは、カウンターを増やしたり制限を設定したりする必要がないため、コレクションに役立ちます。代わりに、ループ コードすべてのための、完了するまでコレクションを続行します。

たとえば、次のコードは Web サーバーに関する情報を返します。Request.ServerVariables含まれているオブジェクトであるコレクション内の要素を返します。 h ループ盟主新しいものを使用する<リ>アイテムを作成して各アイテムの名前を表示します。

<ul>@foreach (Request.ServerVariables の var myItem){ <li>@myItem</li>}</ul>

キーワードのすべてのためのコレクション内の項目を表す変数を宣言するための括弧が続きます (例)。var 要素続いてキーワードループするコレクションを宣言します。ループすべてのための本体では、以前に宣言された変数を使用して現在の要素にアクセスできます。

Razor 構文を使用した ASP.NET Web プログラミングの概要 (C#) (12)

より一般的なループを作成するには、次のステートメントを使用します。その間使用する。

@{ var countNum = 0; while (countNum <50) { countNum += 1; <p>Zeile #@countNum: </p> }}

ループはその間キーワード別その間ループの開始に続いて括弧と継続時間 (ここでは 50 未満の場合)カウント数) を使用して、繰り返すブロックを指定します。ループは通常、カウントに使用される変数またはオブジェクトをインクリメント (加算) またはデクリメント (減算) します。この例では、演算子はループです+=実行するたびに 1カウント数追加。 (デクリメント ループで変数をデクリメントするには、デクリメント演算子を使用します。-=使用)。

オブジェクトとコレクション

ASP.NET Web サイトのほとんどすべてが、Web ページ自体を含むオブジェクトです。このセクションでは、コードでよく使用する重要なオブジェクトについて説明します。

ページ オブジェクト

ASP.NET の最も単純なオブジェクトはページです。ターゲット オブジェクトを指定せずに、ページ オブジェクトのプロパティに直接アクセスできます。次のコードは page オブジェクトを使用します問い合わせページのファイルパスを取得します。

@{ 変数パス = Request.FilePath;}

現在のページ オブジェクトのプロパティとメソッドを参照していることを明確にするために必要なキーワードこのページ オブジェクトをコードで表すために使用できます。ページをレンダリングするために追加される前このここにコードサンプルがあります

@{ 変数パス = this.Request.FilePath;}

オブジェクトのプロパティ本のページなどの多くの情報を取得するために使用できます。

  • 問い合わせすでに述べたように、これは次のような現在のリクエストに関する情報のコレクションです。 B. リクエストを行ったブラウザの種類、ページの URL、およびユーザー ID。

  • 答えこれは、サーバー コードの実行が終了したときにブラウザーに送信される応答 (ページ) に関する情報のコレクションです。たとえば、このプロパティを使用して、情報を応答に書き込むことができます。

    @{ // ページのリクエスト オブジェクトにアクセスして URL を取得します。 var pageUrl = this.Request.Url;}<a href="@pageUrl">マイページ</a>

コレクション オブジェクト (配列と辞書)

コレクション同じタイプのオブジェクトの。 B. データベースからのオブジェクトのコレクションできるグループ。 ASP.NET には多くの組み込みコレクションがあります。Request.Filesを含む。

多くの場合、コレクション内のデータを操作します。 2 つの一般的なコレクション タイプは次のとおりです。配置いつ辞書午前。配列は、類似したアイテムのコレクションを格納したいが、各アイテムを格納するために個別の変数を作成したくない場合に便利です。

@* 配列ブロック 1: 中かっこで新しい配列を宣言します。 *@@{ <h3>TeamMembers</h3> string[] teamMembers = {"Matt", "Joanne", "Robert", "Nancy"}; foreach (var person in teamMembers) { <p>@person</p> }}

配列は特定のデータ型を宣言します (例:ライン整数予定時間.変数に配列を含めることができることを示すには、角括弧 (または整数[]そのような弦[])。配列内の要素は、位置 (インデックス) または命令のいずれかです。すべてのためのつまり、最初の要素は位置 0 にあり、2 番目の要素は位置 1 にあり、以下同様です。

@{ string[] teamMembers = {"Matt", "Joanne", "Robert", "Nancy"}; <p>teamMembers 配列内の名前の数: @teamMembers.Length </p> <p>Robert の現在の位置: @Array.IndexOf(teamMembers, "Robert")</p> <p>配列-2 番目の位置 (0 から始まる) の要素は @teamMembers[2] です</p> <h3>リスト内のチーム メンバーの現在の順序</h3> foreach (teamMembers の変数名) { <p>@name</ p> } <h3>リスト内のチーム メンバーの逆順</h3> Array.Reverse(teamMembers); foreach (var reversedItem in teamMembers) { <p>@reversedItem</p> }}

配列の要素数は長いですプロパティを取得することで判別できます。メソッドを使用して、配列内の特定の要素の位置を取得します (配列を検索します)。Array.IndexOf使用する。配列の内容を反転したり (メソッド)、内容を変更したりできます (Array.ReverseArray.Sortメソッド) もソートできます。

ブラウザに表示される文字列配列コードの出力:

Razor 構文を使用した ASP.NET Web プログラミングの概要 (C#) (13)

ディクショナリは、対応する値を設定または取得するためのキー (または名前) を指定するキーと値のペアのコレクションです。

@{ var myScores = new Dictionary<string, int>(); myScores.Add("test1", 71); myScores.Add("test2", 82); myScores.Add("test3", 100); myScores.Add("test4", 59);}<p>テスト 3 の私のスコア: @myScores["test3"]%</p>@{myScores["test4"] = 79;}<p>私のテスト 4 の修正スコア: @myScores["test4"]%</p>

辞書を作成するには、キーワードを入力しますノイ新しいディクショナリ オブジェクトを作成していることを示します。キーワードを使用して辞書を変数に挿入します戦争割り当てることができます。角括弧 (< >) を使用して、ディクショナリ内の項目のデータ型を示します。これは実際には新しい辞書を作成するメソッドであるため、宣言の最後に一対の括弧を追加する必要があります。

ディクショナリに項目を追加するには、ディクショナリ変数 (マイスコアこの場合)追加キーと値を指定します。または、次の例のように、キーに角かっこでラベルを付けて、簡単な割り当てを行うこともできます。

myErresults["test4"] = 79;

ディクショナリから値を取得するには、角括弧でキーを指定します。

var testScoreThree = myScores["test3"];

パラメータを指定してメソッドを呼び出す

この記事の前半で説明したように、プログラムで使用する任意のオブジェクトにメソッドを適用できます。たとえば、オブジェクトでデータベース方法があればデータベース接続行う。多くのメソッドには、1 つ以上のパラメーターもあります。パラメータメソッドがタスクを実行できるようにするためにメソッドに渡される値です。たとえば、3 つのパラメーターを受け入れるメソッドの場合:Request.MapPath宣言を確認します。

public string MapPath (string virtualPath, string baseVirtualDir, bool allowCrossAppMapping);

(行は読みやすくするために折り返されています。改行は、引用符で囲まれた文字列以外のほとんどの場所に配置できることに注意してください。)

このメソッドは、指定された仮想パスに対応するサーバー上の物理パスを返します。メソッドの 3 つのパラメーターは次のとおりです。仮想パスbaseVirtualDir、とAllowCrossAppMapping午前。 (宣言では、パラメーターと、受け入れるデータのデータ型がリストされていることに注意してください。) このメソッドを呼び出すときは、3 つのパラメーターすべてに値を指定する必要があります。

Razor 構文では、オプションはパラメーターをメソッドに渡すためのものです。位置パラメータいつ名前付きパラメーター位置パラメーターを使用してメソッドを呼び出す方法は 2 つあります。メソッド宣言で指定された正確な順序でパラメーターを渡します。 (通常、このメソッドのドキュメントを見れば、この順序がわかります)。順序に従う必要があり、パラメーターをスキップすることはできません。空の文字列 ("") またヌル、値なしで位置パラメータを渡します。

次の例では、script という名前の Web サイトを作成します。フォンフォルダーがあるとします。コードはメソッドですRequest.MapPath3 つのパラメーターの値を正しい順序で呼び出して渡します。その後、マップされた結果のパスが表示されます。

@{ // 位置パラメータを持つメソッドにパラメータを渡します。 var myPathPositional = Request.MapPath("/scripts", "/", true);}<p>@myPathPositional</p>

メソッドに多くのパラメーターがある場合は、名前付きパラメーターを使用してコードを読みやすくすることができます。名前付きパラメーターを使用してメソッドを呼び出すには、パラメーター名に続けてコロン (:) を指定し、その後に値を指定します。名前付きパラメーターの利点は、任意の順序で渡すことができることです。 (欠点は、メソッド呼び出しがコンパクトではないことです)。

次の例では、上記と同じメソッドを呼び出しますが、名前付きパラメーターを使用して値を提供します。

@{ // 名前付きパラメーターを持つメソッドにパラメーターを渡します。 var myPathNamed = Request.MapPath(baseVirtualDir: "/", allowCrossAppMapping: true, virtualPath: "/scripts");}<p>@myPathNamed</p>

ご覧のとおり、パラメーターは異なる順序で渡されます。ただし、前の例とこの例を実行すると、同じ値が返されます。

エラー処理

try-catch ステートメント

多くの場合、コードには、制御できない理由で失敗する可能性のあるステートメントが含まれています。例えば:

  • コードがファイルを作成またはアクセスしようとすると、あらゆる種類のエラーが発生する可能性があります。必要なファイルが見つからないか、ロックされているか、コードに権限がありません。
  • 同様に、コードがデータベース内のレコードを更新しようとすると、権限の問題が発生し、データベースへの接続が失われ、保存されたデータが無効になる可能性があります。

プログラミングの観点から、これらの状況は例外呼ばれた。コードが例外をスローすると、ユーザーを悩ませるエラー メッセージが生成 (スロー) されます。

Razor 構文を使用した ASP.NET Web プログラミングの概要 (C#) (14)

コードが例外をスローする場合、またはこのタイプのエラー メッセージを回避するには、次のステートメントを使用します。トライ/キャッチできる。声明で試み、チェックしているコードを実行します。 1つ以上キャッチステートメントを使用すると、発生した可能性のある特定のエラー (特定の種類の例外) を検索できます。予想されるエラーをチェックするために必要な数キャッチステートメントを記録できます。

ノート

ページの例外Response.Redirect発生する可能性があるため、ステートメントでトライ/キャッチメソッドを使用しないことをお勧めします。

次の例は、最初の要求でテキスト ファイルを作成し、ユーザーがファイルを開くためのボタンを表示するページを示しています。この例では、意図的に間違ったファイル名を使用すると、例外が発生します。このコードには、2 つの例外ステートメントとDirectoryNotFoundException、ASP.NET フォルダーが見つからない場合に発生しますFileNotFoundExceptionのステートメントが含まれていますキャッチ. (この例の手順をコメントアウトして、すべてが正常に機能する場合の動作を確認できます)。

コードが例外を処理しない場合、前のスクリーンショットのようなエラー ページが表示されます。ただし、このセクションはトライ/キャッチ、これらのタイプのエラーがユーザーに表示されないようにするのに役立ちます。

@{ var dataFilePath = "~/dataFile.txt"; var fileContents = ""; var physicalPath = Server.MapPath(dataFilePath); var userMessage = "こんにちは、時間は " + DateTime.Now; var userErrMsg = ""; var errMsg = ""; if(IsPost) { // ユーザーが「ファイルを開く」ボタンをクリックして // ページを投稿すると、作成されたファイルを読み取り用に開いてみます。 try { // ファイルへのパスが間違っているため、このコードは失敗します。 fileContents = File.ReadAllText(@"c:\batafile.txt"); // このコードは機能します。ページのエラーを修正するには、 // 上記のコード行をコメント化し、コメントを外します。 //fileContents = File.ReadAllText(physicalPath); } catch (FileNotFoundException ex) { // 例外オブジェクトをデバッグ、ロギングなどに使用できます。 errMsg = ex.Message; // ユーザーにとって分かりやすいエラー メッセージを作成します。 userErrMsg = "ファイルを開くことができませんでした。" + "システム管理者に連絡してください。"; } catch (DirectoryNotFoundException ex) { // 前の例外と同様。 errMsg = ex.message; userErrMsg = "ディレクトリが見つかりませんでした。" + "システム管理者に連絡してください。"; } } else { // ページが初めてリクエストされたときに、テキスト ファイルを作成します。 File.WriteAllText(physicalPath, userMessage); }}<!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8" /> <title>Try-Catch ステートメント</title> </head> <body> <フォーム メソッド="POST" action="" > <input type="Submit" name="Submit" value="ファイルを開く"/> </form> <p>@fileContents</p> <p>@userErrMsg</ p ></body></html>

その他のリソース

Visual Basic によるプログラミング

付録: Visual Basic 言語と構文

参考資料

(Video) 初心者おばちゃんの簡単ASP.NET Razor PagesでRESTFul/Ajax使ってみよう

ASP.NET

C言語

FAQs

Razor構文とは何ですか? ›

Razor 構文は、Web ページにサーバー ベースのコードを埋め込むための簡単なプログラミング構文です。 Razor 構文を使用する Web ページには、クライアント コンテンツとサーバー コードという 2 種類のコンテンツがあります。 クライアント コンテンツは、Web ページで使い慣れているものです。

Razor C#とは何ですか? ›

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

C#のRazorの読み方は? ›

Razor は "レイザー" と読みます。

Razorの拡張子は? ›

通常、Razor を含むファイルには、ファイル拡張子 .cshtml が付いています。 Razor は、Razorコンポーネント ファイル ( .razor ) にも含まれています。

ビューエンジンとは何ですか? ›

ビュー・エンジンとは ASP.NET MVCのV、つまり「ビュー」は、HTMLコードの元となる定義ファイル(=ビュー定義)と、それを実際にHTMLコードに変換(=レンダリング)する処理系で構成される。 この、サーバ側でHTMLコードを動的に生成する処理系の部分を「ビュー・エンジン」と呼んでいる。

「Razor」の読み方は? ›

レザー【razor】

《「レーザー」とも》西洋かみそり。

C++の拡張子は? ›

ソースファイルの拡張子はC言語が .c なのに対して、C++では . cpp .c++ .cxx など複数種類が認められている。

C言語のファイル名の拡張子は? ›

C言語の場合、ファイル名には必ず拡張子「.c」をつけなければなりません。

CPPとはどういう意味ですか? ›

CPP(Certified Procurement Professional)の目的

CPPは、Certified Procurement Professionalの略で、購買・調達業務に携わる方を対象に、購買・調達分野における専門的な知識を身につけていることを証明する資格です。

コンパイルってどういう意味? ›

コンパイルとは、特定のプログラミング言語を用い記述されコンピュータープログラムを他の言語 (普通はコンピューターが実行できるバイナリ言語) を用い記述され同じプログラムに形を変えることである。 コンパイラーはこのタスクを実行するソフトウェアです。

C++のヘッダーファイルの拡張子は? ›

C++のヘッダファイル (header file, インクルードファイル, include file)とは、拡張子に . hpp, .h, .hxx, .tcc 、もしくは、拡張子なし(iostream, string等)のファイルで、マクロの定義、関数やクラスのプロトタイプ、テンプレートを記述するファイルです。

C#の拡張子は? ›

. csとは、Microsoftが開発したオブジェクト指向のプログラミング言語「C#」において、ソースコードが記述されたファイルに付く拡張子のことである。

「Cファイル」の読み方は? ›

実際のファイル名は「hoge.c」のようになります。 「c」の読み方については「シー」と読む人がほとんどだと思います。 そのまんま、アルファベット読みですね。

C#言語の拡張子は? ›

.csとは、Microsoftが開発したオブジェクト指向のプログラミング言語C#」において、ソースコードが記述されたファイルに付く拡張子のことである。

Videos

1. ASP.NET Core Razor ページの概要 - ダミアン エドワーズ
(NDC Conferences)
2. .NET Core (.NET6) の Razor ページについて学習する
(DotNetMastery)
3. 【Blazor】FetchData razorの中身を解説する
(ねこじょーかー)
4. ASP.NET Core 5 - MVC - ブートストラップ - レスポンシブ Web プログラミング - 講義 1: 最初の Web アプリケーション
(Software Engineering Courses - SE Courses)
5. 31. (ASP.NET Core 1.0 & MVC) Razor ビューとビュー レイアウト
(Programming Made EZ)
6. 剃刀とは? | |パート - 01 | ASP.Net MVC を使用して Razor View Engine を学ぶ |チュートリアルチーム
(Tutorials Team)
Top Articles
Latest Posts
Article information

Author: Lakeisha Bayer VM

Last Updated: 04/06/2023

Views: 6224

Rating: 4.9 / 5 (49 voted)

Reviews: 88% of readers found this page helpful

Author information

Name: Lakeisha Bayer VM

Birthday: 1997-10-17

Address: Suite 835 34136 Adrian Mountains, Floydton, UT 81036

Phone: +3571527672278

Job: Manufacturing Agent

Hobby: Skimboarding, Photography, Roller skating, Knife making, Paintball, Embroidery, Gunsmithing

Introduction: My name is Lakeisha Bayer VM, I am a brainy, kind, enchanting, healthy, lovely, clean, witty person who loves writing and wants to share my knowledge and understanding with you.