跳過到頁腳內容
使用IRONBARCODE

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

在當今快速變化的數位環境中,QR碼的生成已成為高效資訊共享的基本工具。 這些緊湊的二維條碼能夠存儲多種數據,包括URL、文本、聯繫資訊、產品詳情等,在現代通信中發揮著關鍵作用。 將QR碼生成功能集成到您的ASP.NET MVC應用程式中,可以讓用戶無縫產生QR碼,增強其體驗,簡化交互,並促進輕鬆的信息交流。

如果您正在開發ASP.NET MVC應用程式並想要集成QR碼生成功能,IronBarcode是一個優秀的庫,可以簡化此過程。 在本文中,我們將探討如何使用Iron Barcode庫在ASP.NET MVC中生成QR碼。

IronBarcode

IronBarcode是一個強大且功能豐富的QR碼生成和識別庫,適用於.NET應用程式。 使用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專案已設置好並準備就緒。 無論您是啟動一個新專案還是使用現有專案,下面列出的步驟將引導您將Iron Barcode庫集成到您的應用程式中。 在我的情況下,我創建了一個新專案。

創建新專案的步驟如下:

  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

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

安裝Iron Barcode

首先,打開Visual Studio中的Package Manager Console並運行以下命令:

Install-Package IronBarCode

此命令將安裝Iron Barcode庫並將必要的引用添加到您的專案中。

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

現在,讓我們編寫一些代碼來創建QR碼。

創建QRCodeModel

在Models文件夾中創建一個模型類並編寫如下代碼:

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參數以訪問網路託管環境。
  • CreateQRCode操作返回一個視圖。
  • 帶有[HttpPost]屬性的CreateQRCode操作使用QRCodeModel參數,其中包含QR碼文本。
  • 在操作內部,使用Iron Barcode庫的QRCodeWriter類生成QR碼。
  • 生成的QR碼作為PNG圖像文件保存於網站根目錄下的名為GeneratedQRCode的文件夾中。
  • 如果GeneratedQRCode文件夾不存在,則會創建它。
  • 生成已保存QR碼圖像的文件路徑和URL。
  • QR碼圖像的URL存儲在ViewBag.QrCodeUri屬性中,以便在視圖中使用。
  • 在過程中發生的任何異常都會被捕獲並記錄。

添加CreateQRCode視圖

現在,為了添加一個新視圖,右鍵點擊QrCodeController類中的CreateQRCode操作方法。 選擇"添加視圖",然後選擇"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

這將把默認路由從HomeController更改為我們的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碼強大功能的動態應用,以實現高效數據共享和檢索。

Iron Barcode對於個人使用是免費的。 However, for commercial purposes, you need to buy its commercial license, which comes with a free trial. 如果您選擇購買完整的Iron Suite,您還可以獲得大幅折扣。 Iron Suite是一個全面的.NET軟體組件集合,旨在簡化開發任務並增強功能。 It offers five powerful libraries, including Iron Barcode, IronOCR, IronPDF, IronXL, and Iron Webscraper that enable developers to work with barcodes, optical character recognition, PDF processing, Excel, and CSV files seamlessly. 如果您選擇購買完整的Iron Suite,您將以兩個產品的價格獲得所有五個產品。

常見問題解答

如何在 ASP.NET MVC 中創建 QR 碼?

您可以通過在 Visual Studio 中設置項目來在 ASP.NET MVC 中創建 QR 碼,通過 NuGet 使用命令 Install-Package IronBarCode 安裝 IronBarcode 庫,並使用 IronBarcode 的類在控制器內生成 QR 碼並在視圖中顯示。

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

可以,IronBarcode 允許您通過調整大小、分辨率、顏色以及添加徽標或註釋來自定義 QR 碼,增強 QR 碼的視覺吸引力和功能。

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

在使用 IronBarcode 生成 QR 碼後,您可以在 ASP.NET MVC 視圖中顯示它,方法是將圖像 URL 存儲在 ViewBag 中,並使用 Razor 視圖中的 HTML <img> 標籤來呈現 QR 碼圖像。

如何使用 .NET 應用程序解碼 QR 碼?

您可以使用 IronBarcode 在 .NET 應用程序中解碼 QR 碼,該庫提供了掃描和提取各種條形碼格式(包括 QR 碼)數據的功能,適用於如庫存管理和票務驗證等應用程序。

IronBarcode 庫有免費版本嗎?

IronBarcode 在個人使用是免費的,允許開發者實驗和測試其功能。對於商業用途,則需要購買許可證,並提供免費試用以供評估。

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

在 ASP.NET MVC 項目中,QR 碼可用於快速訪問網站、無接觸支付、票務、庫存管理和移動應用程式整合,增強用戶互動和信息傳播。

如何設置用於 QR 碼生成的 ASP.NET MVC 項目?

設置用於 QR 碼生成的 ASP.NET MVC 項目,使用 Visual Studio 創建一個新的 ASP.NET Core Web 應用,選擇 'Model-view-controller' 模版,然後安裝 IronBarcode 庫以開始在您的應用程式中生成 QR 碼。

Iron Suite 中包含哪些庫?

Iron Suite 包括多個 .NET 庫,如 Iron Barcode、Iron OCR、Iron PDF、Iron XL 和 Iron Webscraper,每個庫提供不同的專業功能,例如條碼生成、光學字符識別、PDF 操作、Excel 處理和網頁抓取。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。