3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Visual Studio for MacでMVCを体験してみた

Last updated at Posted at 2020-05-05

#記事一覧
Visual StudioのASP.NET Core MVC で Web アプリを作成してみた(記事一覧)

#始めたきっかけ

  • プライベートでは、Macがメイン
  • デスクトップアプリを作ろうとしたけど、どうせならクラウドアプリの方が良いなと思った
  • 色々調べたけど、一番簡単そうなやつ

#インストール

Visual Studio 2019 for Mac COMMUNITY をインストールする。
Microsoftのインストール手順のページ

#チュートリアルの実施

Microsoftのチュートリアル(ASP.NET Core MVC で Web アプリを作成する)を実行してみる。
チュートリアルの構成と概略は以下の通り。

##1. ASP.NET Core MVC の概要

Web アプリケーション(Model-View-Controller)プロジェクトの作成と、作成直後のプロジェクトを実行してみるチュートリアルです。

Title(上のModeling Toolの部分)と、container(下の@2020 - Modelin Toolの部分)の表示内容を変更していますが、実行結果は以下の通り。

image-1.png

##2. ASP.NET Core MVC アプリにコントローラーを追加する

追加したコントローラーが返した文字列をビューで表示するチュートリアルです。
冒頭にMVCアーキテクチャの各コンポーネントの概念が説明されています。
以下は私がざっくりと認識した内容です。

  • モデル
    • システムのデータを管理して、データにビジネスロジックをもたせ、機能を制御するコンポーネント。
  • ビュー
    • モデルデータなどの表示、入力を受け付けるユーザインタフェースを担うコンポーネント。
  • コントローラー
    • モデルとビューを制御するコンポーネント。

###チュートリアルで追加したコントローラーと実行結果

コントローラークラスを追加する。
Image2-3.png
Image2-4.png
追加したコントローラークラスを画像の様に置き換える。

追加したコントローラー
namespace ModelingTool.Controllers
{
    public class HelloWorldController : Controller
    {
        // GET: https://localhost:****/HelloWorld/
        public string Index()
        {
           return "URLとコントローラが自動でひもづけられる。";
        }
    }

    public string Welcome(string name, int numTimes = 1)
    {
        return HtmlEncoder.Default.Encode($"Hello {name}, NumTimes is: {numTimes}");
    }
}

▶︎で実行してみる。
Image2-6.png
追加したコントローラー名(Controllerは除く)をURLのサブディレクトリ(/HelloWorld)に指定する。
Imase2.png
 * Controllerを追加すると、サブディレクトリが自動で割り当てられる
  https://localhost:****/(コントローラー名)/
  "Controller"は含まれない
 * 推奨されていたが、クラス名にControllerを付けなくても特に問題なくURLにアクセスできた

Welcomeにもアクセスしてみる。
Image2-2.png
 * Index以外のメソッドは、/(コントローラー名)/(メソッド名)のサブディレクトリが割り当てられる
 * 引数は任意に追加でき、URLのクエリ(?引数名=値)としてアクセスできる。2つ以上引数がある場合は、&で連結する。

追加したコントローラーがデフォルトのままだと、Index()はViewクラスを返す様になっているため、Viewクラスを追加していない状態では、リクエスト時に例外エラーとなる。
Image2-7.png

##3. ASP.NET Core MVC アプリへのビューの追加

Razorビューファイルを使用して、クライアントへの HTML 応答を生成するプロセスを完全にカプセル化するチュートリアルです。

###チュートリアルで追加したビューと実行結果
コントローラーのメソッドに紐付くビューを追加する。
Image3-1.png
 * Viewの下に、Controllerと同じ名前のディレクトリ(HelloWorld)を作成する
 * 作成したディレクトリ配下に、[Razor ビュー] を追加する
 * [Razor ビュー] はコントローラーのメソッド分追加し、名前はコントローラーのメソッド名(Index、Welcome)と同じにする

追加したビュー(Index.cshtml)を以下の様に変更する。

Index.cshtml
@{
    ViewData["Title"] = "Hellow";
}

<h2>Hellow World</h2>

<p>Hello from our View Template!</p>

コントローラーのIndexメソッドを追加時の状態に戻す。
Image3-1.png
実行して追加したビューが有効になっていることを確認してみる。
Image3-2.png

WelcomeのコントローラーもViewクラスに対応してみる。

HelloWorldController
    public IActionResult Welcome(string name, int numTimes = 1)
    {
        ViewData["Message"] = "Hello " + name;
        ViewData["NumTimes"] = numTimes;
        return View();
    }
Welcome.cshtml
@{
    ViewData["Title"] = "Welcome";
}

<h2>Welcome</h2>

<ul>
    @for (int i = 0; i < (int)ViewData["NumTimes"]; i++)
    {
        <li>@ViewData["Message"]</li>
    }
</ul>
Image3-3.png

##4. ASP.NET Core MVC アプリへのモデルの追加

###チュートリアルで追加したモデルと実行結果

データモデルクラスを追加する。
Image4-1.png
EF Core SQL Server プロバイダーパッケージを追加する。
Image4-2.png
Image4-3.png

#Seriese

3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?