--- 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` `最小限`