シンプルな ASP.NET Blazor アプリケーションを作成する

非常にシンプルなASP.NET Blazorアプリケーションを作成する手順を紹介します。

概要

ASP.NET CoreではWebFormアプリケーションはサポートされなくなり、ASP.NET MVC または Razor Pages, Blazor アプリケーションのいずれかを選択する必要があります。次バージョンの .NET 5 でもASP.NET WebForm アプリケーションはサポートされないため、いずれかの仕組みに移行する必要があります。
.NET Framework を利用すれば、引き続き ASP.NET WebFormを利用できますが、.NET Framework 4.8以後のバージョンアップの予定はないため、 徐々にフレームワークの主流は.NET Core, .NET 5, .NET 6 に移行していくと思われます。

この記事では、C#を利用して、シンプルなASP.NET Blazor アプリケーションの作成手順を紹介します。

手順 (.NET 6)

ASP.NET Core の空のプロジェクトの作成

ASP.NET Core Webアプリケーションの空のプロジェクトを作成します。手順はこちらの記事を参照してください。

Program.cs ファイルの変更

Blazorアプリケーションとして実行するため、Program.cs ファイルのコードを変更します。
Program.cs
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "Hello World!");

app.Run();

AddRazorPages() AddServerSideBlazor() を追加します。また、UseStaticFiles() UseRouting() を追加します。 UseStaticFilesはこの段階では追加しなくても動作しますが、UIの応答を実装する段階では必ず必要になるため、この段階から追加しておきます。
エンドポイントの設定で MapBlazorHub() .MapFallbackToPage() を追加します。
Program.cs (編集後)
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
var app = builder.Build();

app.UseStaticFiles();
app.UseRouting();

app.UseEndpoints(endpoints =>
{
  endpoints.MapBlazorHub();
  endpoints.MapFallbackToPage("/index");
});

app.Run();

Pagesフォルダの追加

アプリケーションで表示するページを格納するフォルダを作成します。 ソリューションエクスプローラーのプロジェクトのノードで右クリックしポップアップメニューを表示します。 [追加]のサブメニューの[新しいフォルダ]の項目をクリックします。


フォルダが作成されますので、 "Pages" の名称にします。


ソリューションエクスプローラーで作成したフォルダを選択し右クリックします。 ポップアップメニューの[追加]のサブメニューの[新しい項目の追加]の項目をクリックします。

フォールバックページの作成

下図の[新しい項目の追加]ダイアログが表示されます。中央のファイルの種類の一覧リストの[Razor ページ - 空]の項目をクリックして 選択します。ファイル名は Index.cshtml とします。
補足
[Razorページ - 空]を選択するとモデルを実装するC#のコードファイルが作成されますが、 このファイルは必須ではないため、[Razor ビュー]の項目を選択して Index.cshtml ファイルのみを作成する手順でも動作します。


ファイルが追加できました。


Index.cshtmlのファイル編集

追加したフォールバックページのindex.cshtml ファイルを変更します。
Index.cshtml
@page
@model SimpleBlazorAppNET6.Pages.IndexModel
@{
}

HTMLページのタグを追記し、"Hello Blazor App World" の文字をページに記載します。
Index.cshtml (編集後)
@page
@model SimpleBlazorAppNET6.Pages.IndexModel
@{
}
<html>
<head>
</head>
<body>
    <p>Hello Blazor App World!</p>
</body>
</html>

プロジェクトの実行

プロジェクトを実行します。下図のページが表示されます。フォールバックページが表示される動作を確認できます。

次の手順

ページは表示できましたが、フォールバックページが表示できたのみで、Blazorアプリケーションらしい挙動はまだありません。 続いて、ルーティングコンポーネントを追加し、Razorコンポーネントが表示できるようにします。 詳細はこちらの記事を参照してください。

手順 (.NET Core / .NET 5)

プロジェクトの作成

Visual Studioを起動します。


[ファイル]メニューの[新規作成]の[プロジェクト]の項目をクリックします。[新しいプロジェクトの作成]ダイアログが表示されます。


ダイアログの検索ボックスで "ASP.NET Core" で検索します。プロジェクトテンプレートの "ASP.NET Core Web アプリケーション" の項目をクリックして選択します。選択後ウィンドウ右下の[次へ]ボタンをクリックします。


プロジェクト名の設定画面が表示されます。プロジェクト名とプロジェクトの保存パスを設定します。設定ができたらウィンドウ右下の[作成]ボタンをクリックします。


[新しい ASP.NET Core Web アプリケーション作成]の画面が表示されます。今回はテンプレートの[空]をクリックして選択します。選択ができたらウィンドウ右下の[作成]ボタンをクリックします。


ASP.NET Coreプロジェクトが作成されます。


プロジェクト作成直後は下記の Program.cs ファイルと Startup.cs ファイルが作成されています。
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

namespace MiniBlazorApp
{
  public class Program
  {
    public static void Main(string[] args)
    {
      CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
              webBuilder.UseStartup<Startup>();
            });
  }
}
Startup.cs 変更前
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace MiniBlazorApp
{
  public class Startup
  {
    // This method gets called by the runtime. Use this method to add services to the container.
    // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
    public void ConfigureServices(IServiceCollection services)
    {
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
      if (env.IsDevelopment()) {
        app.UseDeveloperExceptionPage();
      }

      app.UseRouting();

      app.UseEndpoints(endpoints =>
      {
        endpoints.MapGet("/", async context =>
              {
            await context.Response.WriteAsync("Hello World!");
          });
      });
    }
  }
}

コードの変更

ASP.NET Core アプリケーションをBlazorアプリケーションに変更するため、Startup.cs ファイルのコードを変更します。


下記に変更します。ConfigureServices メソッドに services.AddRazorPages(), services.AddServerSideBlazor() を追加します。また、 app.UseEndpoints のコードを変更します。
endpoints.MapFallbackToPage("/index"); のコードによりアプリケーションを起動すると、index ページにアクセスする動作になります。index ページはPagesディレクトリに配置した index.cshtml ページになります。

Startup.cs 変更後
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace MiniBlazorApp
{
  public class Startup
  {
    // This method gets called by the runtime. Use this method to add services to the container.
    // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
    public void ConfigureServices(IServiceCollection services)
    {
      services.AddRazorPages();
      services.AddServerSideBlazor();
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
      if (env.IsDevelopment()) {
        app.UseDeveloperExceptionPage();
      }

      app.UseRouting();

      app.UseEndpoints(endpoints =>
      {
        endpoints.MapBlazorHub();
        endpoints.MapFallbackToPage("/index");
      });
    }
  }
}

ページ(フォールバックページ)の追加

ページを格納するフォルダを作成します。ソリューションエクスプローラでプロジェクトのノードを右クリックし、ポップアップメニューの[追加]メニューの[新しいフォルダ]の項目をクリックします。


フォルダが作成されますので "Pages" の名称にします。


続いて、ページを作成します。ソリューションエクスプローラでプロジェクトのノードを右クリックし、ポップアップメニューの[追加]メニューの[新しい項目]の項目をクリックします。


[新しい項目の追加]ダイアログが表示されます。中央のファイルの種類一覧の[Razor ページ]の項目をクリックして選択します。また、ダイアログ下部の[名前]欄のテキストボックスに "index.cshtml" を入力します。設定ができたら、ダイアログ右下の[追加]ボタンをクリックします。
補足
[Razorページ]を選択するとモデルを実装するC#のコードファイルが作成されますがこのファイルは必須ではないため、[Razor ビュー]の項目を選択して Index.cshtml ファイルのみを作成する手順でも動作します。


Pagesフォルダ内に index.cshtml ファイルが作成されます。


index.cshtmlファイルを編集し下記の記述にします。
index.cshtml
@page
@model MiniBlazorApp.Pages.IndexModel
@{
}
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8" />
</head>
<body>
    <p>Hello Blazor App World!</p>
</body>
</html>

プロジェクトの実行

上記のプロジェクトを実行します。index.cshtml のページが表示され、ページに記述した "Hello Blazor App World!" の文字がページに表示されていることが確認できます。


非常に単純な、Blazor Web アプリケーションを作成できました。

次の手順

ルーティングコンポーネントを追加し、Razorコンポーネントが表示できるようにします。詳細はこちらの記事を参照してください。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2022-05-28
作成日: 2019-10-04
iPentec all rights reserverd.