跳至页脚内容
USING IRONBARCODE

How to Generate QR Codes in ASP.NET MVC

在当今快节奏的数字化环境中,二维码的生成已成为高效信息共享的重要工具。 这些紧凑的二维条形码能够存储各种数据,包括网址、文本、联系信息、产品详情等等,在现代通信中发挥着关键作用。 将二维码生成功能集成到您的 ASP.NET MVC 应用程序中,您可以通过无缝生成二维码来增强用户体验,简化交互,并促进轻松的信息交换,从而赋能用户。

如果您正在开发 ASP.NET MVC 应用程序并希望集成二维码生成功能, IronBarcode是一个优秀的库,可以简化该过程。 本文将探讨如何使用 Iron Barcode 库在 ASP.NET MVC 中生成二维码。

IronBarcode

IronBarcode 是一个功能强大且特性丰富的 .NET 应用程序二维码生成和识别库。 借助 IronBarcode,开发人员可以轻松地将条形码和二维码功能集成到他们的 ASP.NET MVC 项目中,包括生成二维码的功能。 该库提供了一套全面的工具和 API,简化了创建和自定义二维码的过程,使开发人员能够根据自己的特定需求进行定制。

IronBarcode 为各种条形码类型(包括二维码)提供广泛的支持,使其成为需要二维码生成功能的项目的理想选择。 它为开发者提供了灵活性,可以指定要编码的数据,控制生成的二维码的大小和分辨率,甚至添加颜色和徽标等视觉样式元素。 该库可确保生成高质量的条形码,并精确控制二维码外观的各个方面。

除了生成二维码之外,IronBarcode 还包含强大的条形码读取和解码功能。 它支持扫描和提取二维码中的数据,使应用程序能够处理其中编码的信息。 此功能适用于需要条形码扫描和数据提取的场景,例如库存管理、票务系统和移动应用程序。

现在,让我们创建一个项目,在 ASP.NET Core MVC Web 应用程序中生成二维码。

项目设置

在深入探讨实现细节之前,让我们确保您的 ASP.NET MVC 项目已设置完毕并准备就绪。 无论您是开始一个新项目还是处理一个现有项目,以下步骤将指导您完成将 Iron Barcode 库集成到您的应用程序中的过程。 就我而言,我创建了一个新项目。

创建新项目的步骤如下:

  1. 打开 Microsoft Visual Studio 2022。
  2. 在起始页上,点击"创建新项目",或者从顶部菜单中选择"文件">"新建">"项目"。
  3. 在"创建新项目"窗口中,您将看到不同的项目模板可供选择。 选择项目模板"ASP.NET Core Web 应用程序(模型-视图-控制器)",然后单击"下一步"。
  4. 输入项目名称和地点。 选择电脑上合适的位置保存项目文件。
  5. 选择所需的框架版本。 Visual Studio 通常会建议使用最新的稳定版本,但如果需要,您可以选择其他版本。 我选择了.NET 7。
  6. 根据您的需求,自定义任何其他项目设置,例如身份验证选项或项目文件夹。
  7. 点击"创建"按钮创建项目。

Visual Studio 随后将生成项目文件并打开解决方案资源管理器,您可以在其中查看项目结构并开始编写代码。

如何在 ASP.NET MVC 中生成二维码:图 1

现在,我们需要将 Iron 条码库安装到我们的应用程序中。

安装 Iron Barcode

首先,在 Visual Studio 中打开程序包管理器控制台,然后运行以下命令:

Install-Package IronBarCode

此命令将安装 Iron Barcode 库,并将必要的引用添加到您的项目中。

如何在 ASP.NET MVC 中生成二维码:图 2

现在,让我们编写一些代码来创建二维码。

创建 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

创建二维码控制器

在您的 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

这段代码设置了一个可以生成二维码的控制器。 当调用CreateQRCode操作时,它会获取二维码的文本,生成二维码图像,保存该图像,并在视图中提供该图像的 URL 以供显示。 更多详情如下:

  • 控制器有一个构造函数,该构造函数接受一个IWebHostEnvironment参数来访问 Web 托管环境。
  • CreateQRCode操作返回一个视图。
  • 带有[HttpPost]特性的CreateQRCode操作接受一个QRCodeModel参数,其中包含二维码文本。
  • 在操作内部,使用 Iron Barcode 库中的QRCodeWriter类生成二维码。 生成的二维码以 PNG 图像文件的形式保存在网站根路径下的GeneratedQRCode文件夹中。
  • 如果GeneratedQRCode文件夹不存在,则会创建该文件夹。
  • 生成已保存二维码图像的文件路径和 URL。
  • 二维码图像的 URL 存储在ViewBag.QrCodeUri属性中,以便在视图中使用。
  • 过程中发生的任何异常都会被捕获并记录。

添加CreateQRCode视图

现在,要添加新视图,请右键单击QrCodeController类中的CreateQRCode操作方法。 选择"添加视图",然后选择"Razor 视图",并单击"添加"按钮。

如何在 ASP.NET MVC 中生成二维码:图 3

将会出现一个新窗口,如下所示。

如何在 ASP.NET MVC 中生成二维码:图 4

输入视图名称,选择模板"创建",然后选择我们新建的模型类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类并更改默认的 Controller Route。

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 中生成二维码:图 5

在文本框中输入文本,然后单击创建按钮。 屏幕上将生成并显示一个二维码,如下图所示。

如何在 ASP.NET MVC 中生成二维码:图 6 - ASP.NET 中的二维码

现在,让我们通过添加注释文本、二维码值和更改二维码颜色来为条形码添加视觉样式。

为二维码添加视觉样式

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

现在,运行项目并生成二维码。

如何在 ASP.NET MVC 中生成二维码:图 7 - 生成二维码

结论

在 ASP.NET MVC 中,集成 IronBarcode 非常简单。 它提供了一个用户友好的界面,使用户可以轻松使用二维码。 通过利用 IronBarcode,您可以添加二维码功能来增强您的应用程序,使用户能够方便地共享和访问信息。 IronBarcode 是一个很有价值的库,它简化了在 ASP.NET MVC 中生成二维码和读取二维码的过程。 它使开发者能够创建动态应用程序,利用二维码的强大功能实现高效的数据共享和检索。

Iron Barcode 可供个人免费使用。 但是,如果用于商业用途,则需要购买其商业许可证,该许可证附带免费试用版。 如果您购买完整的铁人套装,还可以享受大幅折扣。 Iron Suite 是一套全面的 .NET 软件组件,旨在简化开发任务并增强功能。 它提供了五个强大的库,包括 IronBarcode、 IronOCRIronPDFIronXLIronWebScraper ,使开发人员能够无缝地处理条形码、光学字符识别、PDF 处理、Excel 和 CSV 文件。 如果您选择购买完整的 Iron Suite 套装,您将以两件产品的价格获得全部五件产品。

常见问题解答

如何在ASP.NET MVC中创建二维码?

您可以通过在Visual Studio中设置项目、使用NuGet命令Install-Package IronBarCode安装IronBarcode库,并在控制器中使用IronBarcode的类生成二维码然后在视图中显示它。

我可以在应用程序中自定义二维码的外观吗?

是的,IronBarcode允许您通过调整大小、分辨率、颜色以及添加徽标或注释来自定义二维码,从而提升二维码的视觉吸引力和功能性。

如何在ASP.NET MVC视图中显示二维码?

在使用IronBarcode生成二维码后,可以通过将图像URL存储在ViewBag中,并在Razor视图中使用HTML <img>标签渲染二维码图像来显示它。

如何在.NET应用程序中解码二维码?

您可以使用IronBarcode在.NET应用程序中解码二维码,该库提供用于扫描和提取多种条码格式(包括二维码)数据的功能,适用于库存管理和票证验证等应用。

IronBarcode库有免费版本吗?

IronBarcode对个人使用是免费的,允许开发者试验和测试它的功能。对于商业用途,需要购买许可证,并附有免费试用以进行评估。

在ASP.NET MVC项目中二维码的应用有哪些?

在ASP.NET MVC项目中,二维码可用于快速访问网站、无接触支付、票务、库存管理和移动应用集成,通过提升用户互动和信息传播来增强项目功能。

如何设置ASP.NET MVC项目以生成二维码?

若要设置ASP.NET MVC项目以生成二维码,请使用Visual Studio创建一个包含'模型-视图-控制器'模板的新ASP.NET Core网络应用程序,然后安装IronBarcode库开始在应用程序中生成二维码。

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 在佛罗里达州迈阿密长大,并在佛罗里达大学学习计算机科学和统计学。