アクションやページ遷移の URL を全て小文字にする

ページ作成日 :

環境

Visual Studio
  • Visual Studio 2019
ASP.NET Core
  • 3.1 (MVC, Razor ページ)

デフォルトの URL の大文字小文字

ASP.NET Core Web アプリ内においてリンクなどで別の URL に遷移する際は、 基本的には大文字小文字が混在します。

法則としては、Razor ページの場合は Pages フォルダ内にある .cshtml のファイル名、 MVC の場合はコントローラークラス名、アクションメソッド名がそのまま使用されます。

この命名法則が適用されるのは、ASP.NET Core の機能を使用して URL を生成するものに限ります。 例えば以下の用に asp-xxxxx を指定したものが対象です。

<!-- Razor ページの場合 -->
<a asp-area="" asp-page="/Privacy">Privacy</a>

<!-- MVC の場合 -->
<a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>

以下のように直接 URL を指定したものは対象外です。

<a href="/Privacy">Privacy</a>

ちなみに生成される URL は上記の法則に従いますが、 ASP.NET Core ではアクセスされた URL の大文字小文字は区別されないため、 URL に大文字小文字をどのようにいれてもアクセス可能です。

URL を全て小文字にする

アクセス自体は大文字小文字を区別しないため動作としての問題は気にする必要はないのですが、 Web ブラウザには URL が表示されるため大文字は表示させたくない人もいるかもしれません。

その場合は Startup.cs に以下のコードを追加すると全てのリンク URL が小文字になります。

// 追加
using Microsoft.AspNetCore.Routing;

public class Startup
{
  public void ConfigureServices(IServiceCollection services)
  {
    services.AddRazorPages();

    // 追加
    services.Configure<RouteOptions>(options =>
    {
      // URL を小文字にする
      options.LowercaseUrls = true;
    });
  }
}