【C#】RazorとMVCの違い(.NET Core)

経緯

ASP.NET Core 3.0 Webアプリを初めて触りました。
新規でプロジェクトを作成したときに選択肢として出てくるRazorとMVCの違いが判らなかったので、簡単にまとめてみました。

↓Razorのプロジェクトと、MVCのプロジェクト
新規プロジェクト画像

赤で囲ってるやつの違いがわからず、ごっちゃになってチュートリアルをやったおかげで大変な目に遭いました。
公式
Razorの概要
Razorのチュートリアル
MVCの概要
MVCのチュートリアル
リンク先へ飛ぶとわかりますが、文字が多くて、、、もっとさらっと概要を掴めるといいんですが
なので自分で簡単にまとめてみることにしました。

ちなみに、ASP.NET CoreのMVCではなくて、設計方法としてのMVCについて知りたい方はこちらへどうぞ。

RazorとMVCの違い

Razorは、各ページそれぞれに対して、サーバ側の処理を書く。
MVCは、各ページとは分離したクラス(コントローラクラス)を作成し、そこに処理を書く(ページに対してサーバ側処理のコードは書かない)


Razorのイメージ図
Razorのページ表示は「.cshtml」と「.cshtml.cs」の二つ一組のファイルを作る
各ページそれぞれに対して、サーバ側の処理が書ける
Razor画像


MVCイメージ図
ControllerクラスのAction(関数)にサーバ処理を書く。
Razorと違いページごとにコードを書かない
Controller単位で処理を分けることができる

MVC画像


使い分け方

各ページに対して処理を書きたい場合は、Razorを使う。
MVCは、使いどころがまだよくわからないので略

具体的な違いについて

RazorとMVCを実際に触ってみて、私が気付いた違いについてまとめます。

フォルダの階層構造の違い

Razorは、Pagesフォルダの下に表示するページファイル(.cshtml)を作っていく。
MVCは、Viewsフォルダの下に、Controller毎にフォルダを作成して、表示するページ(.cshtml)を作っていく。


Razorのフォルダ構造
Pagesフォルダ下に、表示するページ「.cshtml」ファイルを作る。
「.cshtml」と同名の「.cshtml.cs」ファイルも用意されているのがわかる。

Razorフォルダ画像

MVCのフォルダ構造
ControllersフォルダにControllerクラスを作成する。
Viewsフォルダに、Controller毎のフォルダを作成し、その下に表示するページ「.cshtml」ファイルを用意する
mvcフォルダ画像


個人的な見解ですが、Razorは表示するページに対して処理を作ればよいので分かりやすく、フォルダの階層構造も直観的でした。
MVCは、「Views/コントローラ/表示するページ」というフォルダの階層構造となり、Controller毎のフォルダを作成する必要があるため、冗長な印象を受けました。
また、アクセスするURLも、「/コントローラ/アクション/」になるためやはり冗長に見えます。
なので、基本的にはRazorを選んでプロジェクトを作成すればよいと思います。


~/Homeへアクセスした場合、
Razorのとき、/Pages/Home.cshtmlを表示する
MVCのとき、/Views/Home/Index.cshtmlを表示する
(デフォルトのaction=Indexのとき)

 

以上です。また理解が進んだら追記するかもしれません。

 

コメント

タイトルとURLをコピーしました