---
# System prepended metadata

title: ASP.NET Core MVC 最小限のプログラム 2021-09-07
tags: [MVC, 最小限, ASP.NET Core]

---

---
lang: ja-jp
breaks: true
---
# ASP.NET Core MVC 最小限のプログラム 2021-09-07

## 空のプロジェクトからの変更

![](https://i.imgur.com/oldMGmI.png)

## Startup.cs

```csharp=
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseRouting();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name   : "defaultの名前は何でも良い。",
                pattern: "{controller=Home}/{action=Index}"
                );
        });
    }
}
```

:::info
デフォルトでは、`Home` + `Controller` という名前のコントローラクラスを呼び出し、その中の `Index` メソッド及び `Home/Index.cshtml` を呼び出す。
:::

## Controllers/HomeController.cs

```csharp=
using Microsoft.AspNetCore.Mvc;

namespace WebApplication15.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            return View();
        }
    }
}
```

:::info
Viewの下の`Home`フォルダの中にある、`Index` + `.cshtml` を呼び出す。
※ただし、`_ViewStart.cshtml` があれば先に呼び出される。
:::

## Views/_ViewStart.cshtml

```csharp=
@{
    Layout = "_Layout";
}
```

:::info
`Views/Shared/_Layout.cshtml` をレイアウトファイルとして呼び出す。
:::

:::info
`_ViewStart.cshtml`の名前は固定。これじゃなきゃダメ。
:::

## Views/Shared/_Layout.cshtml

```htmlembedded=
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8" />
</head>
<body>
@RenderBody()
</body>
</html>
```

:::info
`body`タグの中に、コントローラの名前と同じフォルダの内容が出力される。
:::

## Views/Home/Index.cshtml

```htmlembedded=
<div>
    <h1>Welcome</h1>
</div>
```

## 実行

![](https://i.imgur.com/ff3Iesb.png)


###### tags: `ASP.NET Core` `MVC` `最小限`
