CSHTML ファイル形式とは?
.cshtml ファイルは、単一のソースファイル内でC#コードとHTMLマークアップを組み合わせた ASP.NET Razor サーバーサイドウェブテンプレートです。この形式は、2011年1月にASP.NET MVC 3の一部として、MicrosoftのRazorビューエンジンと共に導入されました。
@ 文字は構文の核となるマーカーです。これが現れると、RazorパーサーはHTMLレンダリングモードからC#実行モードに切り替わります。ビューには、@model 宣言、@using 名前空間のインポート、@functions ブロック、タグヘルパー、HTMLヘルパー、および共有の _Layout.cshtml ページ用の @section スロットを含めることができます。Razorエンジンはサーバー側でファイルをC#にコンパイルし、次に.NET中間言語(IL)にコンパイルします。ブラウザにはレンダリングされたHTMLのみが送信され、.cshtml ソースがクライアントに公開されることはありません。
cs プレフィックスは、C#の代わりにVisual Basicを使用する .vbhtml Razorビューとこれらのファイルを区別します。ASP.NET Core 2.0ではRazor Pagesが導入されました。これも .cshtml を使用しますが、上部に @page ディレクティブを追加することで、ファイルが独自の自己完結型コントローラーおよびビューとして機能するようになります。シングルページアプリケーション(SPA)パターンでは、Blazorコンポーネントが .razor 拡張子を使用し、新しいASP.NET Coreプロジェクトでは主に .cshtml に取って代わっています。
.cshtml ファイルは、Visual StudioまたはC# Dev KitをインストールしたVisual Studio Codeで編集されます。ブラウザで直接開くと、レンダリングされたHTMLではなく生のソースコードが表示されます。
セキュリティと安全性
リスク: LOW.cshtmlはプレーンテキストのソースファイルです。テキストエディタやIDEで開くことは無害です。サーバーは .cshtml ファイルへの直接的なHTTPアクセスをブロックするように設定されるべきです(IISやKestrelはデフォルトでこれを行います)。設定ミスにより .cshtml が生のテキストとして提供されると、アプリケーションロジックや接続文字列が漏洩する可能性があり、これはサーバー管理者にとってのセキュリティリスクとなりますが、ファイルをローカルで読む人にとってのリスクではありません。
形式の詳細
概要CSHTML ファイルを開くプログラム
技術的詳細
詳細仕様| エンコーディング | UTF-8テキスト(Visual Studioのデフォルト。他のエンコーディングもサポート) |
| コンテナ | プレーンテキスト - C#コードとHTMLマークアップの混在。バイナリラッパーなし |
| MIMEタイプ | text/html(ブラウザへのレンダリング出力)、text/plain(エディタ内のソースファイル) |
| Razor構文マーカー | @ 文字によりHTMLレンダリングモードからC#実行モードに切り替え |
| コンパイル | サーバー側でRazorエンジンによりC#、次いで.NET ILにコンパイル。ソースファイルがブラウザに配信されることはない |
| 主要なディレクティブ | @model, @using, @functions, @section, @page (Razor Pages), @inject |
| Razor構文バージョン | v1 (MVC 3, 2011) → v2 (MVC 4) → v3 (MVC 5/Core 1) → Razor 8 (ASP.NET Core 8, 2023) |
| タグヘルパー | ASP.NET Core 1.0からサポート。サーバーレンダリングの属性生成においてHTMLヘルパーを代替 |
| レイアウトシステム | _Layout.cshtml が共有ページの外枠を定義。ビューは @section ブロックを使用してコンテンツを注入 |
| 関連OS | Windows (IIS/IIS Express), Linux および macOS (Kestrel, Docker) |
| Razor Pagesバリアント | @page ディレクティブにより、.cshtml ファイルが自己完結型のコントローラー+ビューになる (ASP.NET Core 2.0+) |
| クライアントへの露出 | ソースファイルがブラウザに提供されることはありません。直接アクセスすると生のテキストまたはHTTPエラーが返されます |
| VB対応版 | .vbhtml (C#の代わりにVisual Basicを使用する同一のRazor構文) |
| 現代の後継パターン | .razor (Blazorコンポーネント) - ASP.NET CoreにおけるSPAスタイルのアプリケーション用 |
| リリース日 | 2011 (ASP.NET MVC 3 / Razor syntax v1) |
| 最新バージョン | Razor 8 (ASP.NET Core 8.0, November 2023) |
| 仕様書 | learn.microsoft.com |
CSHTML の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。CSHTML ファイルについて最初の質問をしてみましょう。