ASP.NET MVC で QR コードを利用する方法

この記事では ASP.NET MVC (ASP.NET Core MVC) で、QR コードを生成して表示する方法を、ステップバイステップで説明します。

ここでは次のように、文字列の入力フォームを用意して、文字を入力してボタンを押すと、QR コードが表示されるようにします。

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

ここでは Visual Studio の Web Application (Model-View-Controller) プロジェクトを利用して、アプリケーションのベースを作成します。

ターゲットフレームワークは .NET 5.0 としています。

ソリューションやプロジェクトの名前は適当につけてください。ここでは "QRCode1" というプロジェクト名にしています。

QRCoder のインストール

NuGet パッケージの管理から、 QRCoder パッケージをプロジェクトにインストールします。

この QRCoder を使うことで、ある文字列からそれを表す QR コードデータを生成することができます。

QR コード生成用の画面の作成

入力フォームのデータモデルの作成

Models フォルダに IndexPageData.cs というファイルを作成して、画面で使うデータをひとまとめにするデータモデルを作成します。

namespace QRCode1.Models {
  public class IndexPageData {
    public string Text { get; set; }
    public string Image { get; set; }
  }
}

入力フォームに入力した文字を Text に、 QR コードを表すデータの Base64 文字列を Image にセットする予定です。

入力フォームの作成

入力フォームは次の通りにしました。 Home/Index.cshtml を書き換えます。

@model IndexPageData
@{
    ViewData["Title"] = "Home Page";
}
<div class="row">
    <div class="col-md-6">
        <form asp-action="Index">
            <div class="form-group">
                <input asp-for="Text" class="form-control" placeholder="Enter text" autocomplete="off" />
                <span asp-validation-for="Text" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Get QR Code" class="btn btn-primary" />
            </div>
        </form>
    </div>
    <div class="col-md-6">
        @if (!string.IsNullOrEmpty(Model?.Image))
        {
            <p><img src="@String.Format("data:image/png;base64,{0}", Model.Image)" alt="@Model.Text" /></p>
        }
    </div>
</div>

ポイントは 20行目の img タグの src 属性です。

src 属性に data:image/png;base64,... とすることで、MVC のコントローラで作成した QR コード (の Base64 文字列) を img タグに直接埋め込んで表示します。

QRCoder による QR コードの生成

HomeController.cs で、画面からの入力を POST で受け取ります。

そこで、何かの文字が入力されていたら、QRCoder を使って QR コードデータを作成します。

public IActionResult Index() {
    return View();
}

[HttpPost]
public IActionResult Index(IndexPageData data) {
  if (string.IsNullOrEmpty(data?.Text)) {
    ModelState.TryAddModelError("Text", "Enter text");
    return View();
  } else {
    // QR コードデータの生成
    var qrGen = new QRCodeGenerator();
    var qrData = qrGen.CreateQrCode(
        data.Text, 
        QRCodeGenerator.ECCLevel.Q);
    var qrCode = new Base64QRCode(qrData);
    data.Image = qrCode.GetGraphic(8);
    return View(data);
  }
}

動作確認

動作確認をします。次のように文字を入力してボタンを押せば、 QR コードが表示されるはずです。

ここで Hello という文字を入力して作成した QR コードは次のようになりました。

以上で ASP.NET MVC で QR コードを生成して表示する方法について説明しました。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 ASP.NET 入門