跳至頁尾內容
使用IRONBARCODE
如何使用C#在ASP.NET MVC中生成QR碼 | IronBarcode

如何在ASP.NET MVC中生成QR碼

在今日快速變化的數位環境中,生成QR碼已成為有效資訊共享的重要工具。 這些緊湊型的二維條碼能夠儲存包含URL、文字、聯繫資訊、產品詳情等大量資料,在現代通訊中扮演著關鍵角色。 將QR碼生成功能整合到您的ASP.NET MVC應用程式中,能讓使用者輕鬆生成QR碼,提升使用體驗、簡化互動和促進無縫的資訊交換。

如果您正在開發ASP.NET MVC應用程式並希望整合QR碼生成功能,IronBarcode是一個出色的程式庫,可以簡化這一過程。 在這篇文章中,我們將探討如何使用IronBarcode程式庫在ASP.NET MVC中生成QR碼。

IronBarcode

IronBarcode是.NET應用程式中一個功能強大且豐富的QR碼生成和識別程式庫。 使用IronBarcode,開發者可以輕鬆地將條碼和QR碼功能整合到他們的ASP.NET MVC專案中,包含生成QR碼的功能。 這個程式庫提供了一套綜合的工具和API,簡化了建立和自訂QR碼的過程,允許開發者根據他們的具體需求進行調整。

IronBarcode為各種條碼型別提供了廣泛支援,包括QR碼,使其成為需要QR碼生成功能的專案的理想選擇。 它為開發者提供了靈活性,可以指定要編碼的資料、控制生成的QR碼的大小和解析度,甚至可以新增顏色和徽標等視覺樣式元素。 該程式庫確保高質量的條碼生成,並精確控制QR碼外觀的每個方面。

除了生成QR碼之外,IronBarcode還包含強大的條碼讀取和解碼功能。 它支援掃描並提取QR碼中的資料,允許應用程式處理其中編碼的資訊。 這項功能在需要條碼掃描和資料提取的場景中非常有用,例如庫存管理、票務系統和移動應用程式。

現在,讓我們建立一個專案來在ASP.NET Core MVC Web應用程式中生成QR碼。

設定專案

在我們深入實施細節之前,先確保您的ASP.NET MVC專案已經設置好並準備就緒。 無論您是開始一個新專案還是使用現有專案,以下步驟將引導您將IronBarcode程式庫整合到您的應用程式中。 在我的情況下,我已經建立了一個新專案。

建立新專案的步驟如下:

  1. 開啟Microsoft Visual Studio 2022。
  2. 在啟動頁面,點擊"建立一個新專案"或從頂部選單中進入"文件" > "新建" > "專案"。
  3. 在"建立新專案"窗口中,您會看到不同的專案範本供選擇。 選擇專案範本"ASP.NET Core web app (Model-view-controller)",然後點擊"下一步"。
  4. 輸入專案名稱和位置。 選擇電腦上適合的位置儲存專案檔案。
  5. 選擇所需的框架版本。 Visual Studio通常會建議最新的穩定版本,如果需要,您也可以選擇不同的版本。 我選擇了.NET 7。
  6. 根據您的需要,自訂任何其他專案設定,如身份驗證選項或專案資料夾。
  7. 點擊"建立"來建立專案。

然後,Visual Studio將會生成專案檔案並打開方案瀏覽器,您可以在此查看專案結構並開始編寫程式碼。

如何在ASP.NET MVC中生成QR碼:圖1

現在,我們需要將IronBarcode程式庫安裝到我們的應用程式中。

安裝IronBarcode

首先,在Visual Studio中打開套件管理器控制台,並運行以下命令:

Install-Package IronBarCode

這條命令將會安裝IronBarcode程式庫並將必要的引用新增到您的專案中。

如何在ASP.NET MVC中生成QR碼:圖2

現在,讓我們編寫一些程式碼來建立QR碼。

建立 QRCodeModel

在Models資料夾中建立一個Model class,並編寫以下程式碼:

using System.ComponentModel.DataAnnotations;

public class QRCodeModel
{
    [Display(Name = "Enter QR Code Text")]
    public string QRCodeText { get; set; }
}
using System.ComponentModel.DataAnnotations;

public class QRCodeModel
{
    [Display(Name = "Enter QR Code Text")]
    public string QRCodeText { get; set; }
}
Imports System.ComponentModel.DataAnnotations

Public Class QRCodeModel
	<Display(Name := "Enter QR Code Text")>
	Public Property QRCodeText() As String
End Class
$vbLabelText   $csharpLabel

建立QR Code控制器

在您的ASP.NET MVC專案中,建立一個名為QrCodeController的新控制器。 為此,右鍵點擊專案結構中的Controllers資料夾,選擇"新增",然後選擇"控制器"。在可用選項中,選擇"MVC控制器 - 空白"。

QrCodeController中編寫以下程式碼:

using Microsoft.AspNetCore.Mvc;
using IronBarCode;
using System.IO;

public class QrCodeController : Controller
{
    private readonly IWebHostEnvironment _environment;

    public QrCodeController(IWebHostEnvironment environment)
    {
        _environment = environment;
    }

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

    [HttpPost]
    public IActionResult CreateQRCode(QRCodeModel generateQRCode)
    {
        try
        {
            // Creating QR Code
            GeneratedBarcode barcode = QRCodeWriter.CreateQrCode(generateQRCode.QRCodeText);
            string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode");

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }

            string filePath = Path.Combine(path, "qrcode.png");
            barcode.SaveAsPng(filePath);

            string fileName = Path.GetFileName(filePath);
            string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}/GeneratedQRCode/{fileName}";

            ViewBag.QrCodeUri = imageUrl;
        }
        catch (Exception ex)
        {
            // Handle exceptions
            // Log the exception details here for troubleshooting and debugging.
            throw;
        }

        return View();
    }
}
using Microsoft.AspNetCore.Mvc;
using IronBarCode;
using System.IO;

public class QrCodeController : Controller
{
    private readonly IWebHostEnvironment _environment;

    public QrCodeController(IWebHostEnvironment environment)
    {
        _environment = environment;
    }

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

    [HttpPost]
    public IActionResult CreateQRCode(QRCodeModel generateQRCode)
    {
        try
        {
            // Creating QR Code
            GeneratedBarcode barcode = QRCodeWriter.CreateQrCode(generateQRCode.QRCodeText);
            string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode");

            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }

            string filePath = Path.Combine(path, "qrcode.png");
            barcode.SaveAsPng(filePath);

            string fileName = Path.GetFileName(filePath);
            string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}/GeneratedQRCode/{fileName}";

            ViewBag.QrCodeUri = imageUrl;
        }
        catch (Exception ex)
        {
            // Handle exceptions
            // Log the exception details here for troubleshooting and debugging.
            throw;
        }

        return View();
    }
}
Imports Microsoft.AspNetCore.Mvc
Imports IronBarCode
Imports System.IO

Public Class QrCodeController
	Inherits Controller

	Private ReadOnly _environment As IWebHostEnvironment

	Public Sub New(ByVal environment As IWebHostEnvironment)
		_environment = environment
	End Sub

	Public Function CreateQRCode() As IActionResult
		Return View()
	End Function

	<HttpPost>
	Public Function CreateQRCode(ByVal generateQRCode As QRCodeModel) As IActionResult
		Try
			' Creating QR Code
			Dim barcode As GeneratedBarcode = QRCodeWriter.CreateQrCode(generateQRCode.QRCodeText)
			Dim path As String = System.IO.Path.Combine(_environment.WebRootPath, "GeneratedQRCode")

			If Not Directory.Exists(path) Then
				Directory.CreateDirectory(path)
			End If

			Dim filePath As String = System.IO.Path.Combine(path, "qrcode.png")
			barcode.SaveAsPng(filePath)

			Dim fileName As String = System.IO.Path.GetFileName(filePath)
			Dim imageUrl As String = $"{Me.Request.Scheme}://{Me.Request.Host}{Me.Request.PathBase}/GeneratedQRCode/{fileName}"

			ViewBag.QrCodeUri = imageUrl
		Catch ex As Exception
			' Handle exceptions
			' Log the exception details here for troubleshooting and debugging.
			Throw
		End Try

		Return View()
	End Function
End Class
$vbLabelText   $csharpLabel

這段程式碼設置了一個能夠生成QR碼的控制器。 當CreateQRCode操作被呼叫時,它將帶來QR碼的文字,生成QR碼圖片,儲存它,並在視圖中顯示它的圖片URL。 詳細資訊如下:

  • 控制器有一個構造函式,它接收一個IWebHostEnvironment參數,用於存取Web託管環境。
  • CreateQRCode操作返回一個視圖。
  • 帶有QRCodeModel參數。
  • 在操作內,使用IronBarcode程式庫中的QRCodeWriter類生成QR碼。
  • 生成的QR碼被儲存為PNG格式的圖片檔案,位於Web根路徑中的一個名為GeneratedQRCode的資料夾中。
  • 如果GeneratedQRCode資料夾不存在,則會建立該資料夾。
  • 生成的QR碼圖片的文件路徑和URL。
  • QR碼圖片的URL被儲存在ViewBag.QrCodeUri屬性中,以便在視圖中使用。
  • 處理過程中發生的任何異常都會被捕獲並記錄。

新增CreateQRCode視圖

現在,為了新增新視圖,右鍵點擊QrCodeController類。 選擇"新增視圖",然後選擇"Razor視圖",並點擊"新增"按鈕。

如何在ASP.NET MVC中生成QR碼:圖3

如下面所示會出現一個新窗口。

如何在ASP.NET MVC中生成QR碼:圖4

寫下視圖名稱,選擇模板"Create",並選擇我們新建立的模型類QRCodeModel。 點擊新增按鈕。 視圖將被建立。 使用下面的程式碼替換您的視圖。

@model QRCodeModel

@{
    ViewData["Title"] = "CreateQRCode";
}

<h1>Create QRCode in ASP.NET MVC</h1>

<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="CreateQRCode">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="QRCodeText" class="control-label"></label>
                <input asp-for="QRCodeText" class="form-control" />
                <span asp-validation-for="QRCodeText" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-primary" />
            </div>
            <div class="form-group">
                @if (ViewBag.QrCodeUri != null)
                {
                    <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt="Generated QR Code" />
                }
            </div>
        </form>
    </div>
</div>

@section Scripts {
    @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); }
}

現在,讓我們轉到Program.cs類並更改預設控制器路由。

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=QrCode}/{action=CreateQRCode}/{id?}"
);
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=QrCode}/{action=CreateQRCode}/{id?}"
);
app.MapControllerRoute(name:= "default", pattern:= "{controller=QrCode}/{action=CreateQRCode}/{id?}")
$vbLabelText   $csharpLabel

這將把預設路由從QrCodeController

現在,編譯並運行專案。

輸出

如何在ASP.NET MVC中生成QR碼:圖5

在文字框中輸入文字並點擊建立按鈕。 將建立一個QR碼並顯示在螢幕上,如下所示。

如何在ASP.NET MVC中生成QR碼:圖6 - QR碼在ASP.NET中

現在,讓我們通過新增註釋文字、QR碼值和改變QR碼顏色來為我們的條碼新增視覺樣式。

在QR碼中新增視覺樣式

CreateQRCode動作方法中新增以下程式碼行。

barcode.AddAnnotationTextAboveBarcode("QR Code Generated by Iron PDF");
barcode.AddBarcodeValueTextBelowBarcode();
barcode.ChangeBackgroundColor(System.Drawing.Color.White);
barcode.ChangeBarCodeColor(System.Drawing.Color.MediumVioletRed);
barcode.AddAnnotationTextAboveBarcode("QR Code Generated by Iron PDF");
barcode.AddBarcodeValueTextBelowBarcode();
barcode.ChangeBackgroundColor(System.Drawing.Color.White);
barcode.ChangeBarCodeColor(System.Drawing.Color.MediumVioletRed);
barcode.AddAnnotationTextAboveBarcode("QR Code Generated by Iron PDF")
barcode.AddBarcodeValueTextBelowBarcode()
barcode.ChangeBackgroundColor(System.Drawing.Color.White)
barcode.ChangeBarCodeColor(System.Drawing.Color.MediumVioletRed)
$vbLabelText   $csharpLabel

現在,運行專案並生成QR碼。

如何在ASP.NET MVC中生成QR碼:圖7 - 生成QR碼

結論

在ASP.NET MVC中,整合IronBarcode非常簡單。 它提供了一個使用者友好的介面,使得與QR碼工作變得簡單。 通過利用IronBarcode,您可以增強您的應用程式,新增QR碼功能,使得使用者可以方便地共享和存取資訊。 IronBarcode是一個有價值的程式庫,簡化了在ASP.NET MVC中生成QR碼和讀取QR碼的過程。 它使開發者能夠建立利用QR碼強大功能進行高效資料共享和檢索的動態應用程式。

IronBarcode個人使用是免費的。 然而,出於商業目的,您需要購買其商業授權,其中附帶免費試用。 如果您獲得完整的Iron Suite,您可能會獲得顯著折扣。 Iron Suite是一個綜合的.NET軟體組件集合,旨在簡化開發任務並增強功能。 它提供五個強大的程式庫,包括IronBarcode、IronOCRIronPDFIronXLIron Webscraper,使開發者能夠簡單地處理條碼、光學字元識別、PDF處理、Excel和CSV檔案。 如果您選擇購買完整的Iron Suite,您將以兩個產品的價格獲得所有五個產品。

常見問題

我該如何在ASP.NET MVC中建立QR碼?

您可以通過在Visual Studio中設置項目、使用NuGet安裝IronBarcode程式庫Install-Package IronBarCode命令,然後使用IronBarcode的類在您的控制器中生成QR碼並在視圖中顯示它。

我可以在應用程式中自定義QR碼的外觀嗎?

可以,IronBarcode允許您通過調整大小、解析度、顏色,並新增徽標或註釋來自定義QR碼,使您的QR碼在視覺上更具吸引力和功能性。

我該如何在ASP.NET MVC視圖中顯示QR碼?

在使用IronBarcode生成QR碼後,您可以通過將圖像URL儲存在ViewBag中,並在您的Razor視圖中使用HTML <img>標籤來呈現QR碼圖像。

我可以使用.NET應用程式解碼QR碼嗎?

您可以使用IronBarcode在.NET應用程式中解碼QR碼,該程式提供掃描和從各種條碼格式中提取資料的功能,包括QR碼,非常適合用於庫存管理和票證驗證的應用程式。

IronBarcode程式庫有免費版本嗎?

IronBarcode的個人使用免費,允許開發者進行試驗和測試其功能。商業用途需要購買授權,可以獲得免費試用進行評估。

ASP.NET MVC項目中QR碼的一些應用是什麼?

ASP.NET MVC項目中的QR碼可用於快速存取網站、非接觸式支付、票務、庫存管理和移動應用整合,增強使用者交互和資訊傳播。

我該如何設置ASP.NET MVC項目以生成QR碼?

要設置ASP.NET MVC項目以生成QR碼,請使用Visual Studio建立帶有"模型-視圖-控制器"模板的新ASP.NET Core網頁應用,然後安裝IronBarcode程式庫開始在您的應用程式中生成QR碼。

Iron Suite中包含哪些程式庫?

Iron Suite包含多個.NET程式庫,如Iron Barcode、Iron OCR、Iron PDF、Iron XL和Iron Webscraper,每個程式庫都為條碼生成、光學字元識別、PDF操作、Excel處理和網頁抓取等任務提供專業功能。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話