跳至页脚内容
USING IRONBARCODE
如何在ASP .NET MVC中使用C#生成QR代码 | IronBarcode

How to Generate QR Codes in ASP.NET MVC

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

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

IronBarcode

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

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

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

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

项目设置

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

创建新项目的步骤如下:

  1. 打开 Microsoft Visual Studio 2022。
  2. 在起始页上,点击"创建新项目",或者从顶部菜单中选择"文件">"新建">"项目"。
  3. 在"创建新项目"窗口中,您将看到不同的项目模板可供选择。 选择项目模板"ASP.NET Core Web 应用程序(模型-视图-控制器)",然后单击"下一步"。
  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

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

创建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动作时,它接收QR码的文本,生成QR码图片,保存它,并在视图中提供图片的URL以进行显示。 更多详情如下:

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

添加CreateQRCode视图

现在,为了添加新视图,右键单击在CreateQRCode动作方法。 选择"添加视图",然后选择"Razor 视图",并单击"添加"按钮。

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

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

如何在ASP.NET MVC中生成QR码:图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类并更改默认控制器路由。

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

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

如何在ASP.NET MVC中生成QR码:图6 - QR码在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中生成QR码:图7 - 生成QR码

结论

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

IronBarcode对个人使用免费。 但是,如果用于商业用途,则需要购买其商业许可证,该许可证附带免费试用版。 如果您购买完整的铁人套装,还可以享受大幅折扣。 Iron Suite 是一套全面的 .NET 软件组件,旨在简化开发任务并增强功能。 它提供五个强大的库,包括IronBarcode、IronOCRIronPDFIronXLIron Webscraper,使开发人员能够无缝处理条形码、光学字符识别、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 标签渲染二维码图像来显示它。

如何在.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处理和网页抓取。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我