使用 IRONQR 如何在 ASP .NET Core 中生成 QR 代码 Jordi Bardia 已更新:六月 22, 2025 下载 IronQR NuGet 下载 免费试用 法学硕士副本 法学硕士副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在双子座打开 向 Gemini 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 二维码已成为现代技术的重要组成部分,提供了一种便捷的方式来存储和传输信息。 在 web开发中,像我们将在 ASP.NET Core中使用 IronQR实现的二维码生成器,提供了动态二维码创建的强大功能。 二维码生成器在票务系统、身份验证、库存管理等各种应用中是不可或缺的。 本文深入探讨了使用 IronQR在 ASP.NET Core中创建二维码的过程,这是为此目的而设计的强大库。 ASP.NET Core作为用于构建 web应用程序的多功能框架,提供了生成二维码的强大功能。 在本文中,我们将深入探讨如何使用来自Iron Software的强大二维码生成库IronQR在 ASP.NET Core中创建二维码的过程。 如何在 ASP.NET Core中生成二维码 使用 Visual Studio创建 ASP.Net项目 从包管理器中安装IronQR库 生成二维码 带格式的生成二维码 理解 IronQR IronQR是用于 .NET应用程序的高性能二维码生成库。 它提供了一个简单且直观的 API,用于生成具有各种自定义选项的二维码。 IronQR支持 .NET Standard,使其与包括 ASP.NET Core在内的广泛平台兼容。 借助 IronQR,开发人员可以轻松生成具有不同数据类型、纠错水平、大小和格式的二维码。 主要特性 1. 读取和创建二维码 IronQR 使您可以轻松地生成和读取二维码。 无论您是需要动态地创建二维码还是从现有的二维码中提取信息,这个库都能满足您的需求。 2. 用户友好的 API 该库提供了一个用户友好的 API,使开发人员可以快速地将条码功能集成到他们的 .NET项目中。 您可以在短短几分钟内开始使用二维码。 3. 兼容性 IronQR支持多种 .NET版本,包括: C#、VB.NET、F# .NET Core (8, 7, 6, 5 和 3.1+) .NET Standard (2.0+) .NET Framework (4.6.2+) 它涵盖了从 web(Blazor & WebForms)、移动(Xamarin & MAUI)、桌面(WPF & MAUI)到控制台应用程序等各种类型的项目。 4. QR检测的机器学习模型 IronQR 使用先进的自定义机器学习模型来检测 QR 码。 这确保了准确和可靠的代码识别。 此外,还提供了一种瘦模式选项(非 ML),适合那些偏好轻量处理方式的人。 5. 读取二维码 您可以从包括以下几种格式的图像中读取二维码: 图片(jpg, png, svg, bmp) 多页图像(gif, tif, tiff) System.Drawing位图 IronDrawing 图像 (AnyBitmap) 6. 写入二维码 IronQR允许您为不同类型的文档写入二维码,例如: 图片(jpg, png, gif, tiff, bmp) System.Drawing图像 流(MemoryStream, byte[]) PDF(在现有 PDF上添加印章) 7. 样式化二维码 通过调整大小、调整边距和边框、重新着色、添加徽标来自定义二维码 8. 错误处理与校正 IronQR提供详细的错误消息并支持自定义 QR 的纠错级别。 了解了这些知识后,让我们开始在 ASP.NET Core 中的应用程序中生成二维码。 第 1 步:使用 Visual Studio 创建一个新的 ASP.NET 项目 在深入二维码生成之前,让我们设置一个新的 ASP.NET Core 项目。 以下是启动新项目的步骤: 首先在 Visual Studio 中创建一个新项目,并选择 ASP.Net Core Web App 应用程序模板 提供项目名称和位置 选择所需的.NET版本。 点击"创建"按钮以根据模板生成应用程序代码 第 2 步:从包管理器安装 IronQR 库 按照以下所示从 Visual Studio 包管理器安装 IronQR 库。 IronQR也可以使用 NuGet 包管理器安装。 第 3 步:生成一个二维码 现在,让我们创建一个二维码应用。 创建 QRCode 模型 using System.ComponentModel.DataAnnotations; namespace GenerateQRCode.Models { public class QRCodeModel { [Display(Name = "Enter QR Code Text")] public string QRCodeText { get; set; } } } using System.ComponentModel.DataAnnotations; namespace GenerateQRCode.Models { public class QRCodeModel { [Display(Name = "Enter QR Code Text")] public string QRCodeText { get; set; } } } Imports System.ComponentModel.DataAnnotations Namespace GenerateQRCode.Models Public Class QRCodeModel <Display(Name := "Enter QR Code Text")> Public Property QRCodeText() As String End Class End Namespace $vbLabelText $csharpLabel 创建一个二维码控制器 要添加新控制器,请右键点击控制器文件夹并提供名称,如下所示。 选择空控制器。 提供一个名称。 接下来,将以下代码集成到控制器中。 using GenerateQRCode.Models; using IronSoftware.Drawing; using IronQr; using Microsoft.AspNetCore.Mvc; namespace GenerateQRCode.Controllers { public class QrCodeController : Controller { private readonly IWebHostEnvironment _environment; public QrCodeController(IWebHostEnvironment environment) { _environment = environment; } public IActionResult Index() { return View(); } [HttpPost] public IActionResult CreateQRCode(QRCodeModel generateQRCode) { try { string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png"); // Create a QR Code object QrCode myQr = QrWriter.Write(generateQRCode.QRCodeText); // Save QR Code as a Bitmap AnyBitmap qrImage = myQr.Save(); // Save QR Code Bitmap as File qrImage.SaveAs(filePath); string fileName = Path.GetFileName(filePath); // qr code file string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName; ViewBag.QrCodeUri = imageUrl; } catch (Exception) { throw; } return View(); } } } using GenerateQRCode.Models; using IronSoftware.Drawing; using IronQr; using Microsoft.AspNetCore.Mvc; namespace GenerateQRCode.Controllers { public class QrCodeController : Controller { private readonly IWebHostEnvironment _environment; public QrCodeController(IWebHostEnvironment environment) { _environment = environment; } public IActionResult Index() { return View(); } [HttpPost] public IActionResult CreateQRCode(QRCodeModel generateQRCode) { try { string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png"); // Create a QR Code object QrCode myQr = QrWriter.Write(generateQRCode.QRCodeText); // Save QR Code as a Bitmap AnyBitmap qrImage = myQr.Save(); // Save QR Code Bitmap as File qrImage.SaveAs(filePath); string fileName = Path.GetFileName(filePath); // qr code file string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName; ViewBag.QrCodeUri = imageUrl; } catch (Exception) { throw; } return View(); } } } Imports GenerateQRCode.Models Imports IronSoftware.Drawing Imports IronQr Imports Microsoft.AspNetCore.Mvc Namespace GenerateQRCode.Controllers Public Class QrCodeController Inherits Controller Private ReadOnly _environment As IWebHostEnvironment Public Sub New(ByVal environment As IWebHostEnvironment) _environment = environment End Sub Public Function Index() As IActionResult Return View() End Function <HttpPost> Public Function CreateQRCode(ByVal generateQRCode As QRCodeModel) As IActionResult Try 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(_environment.WebRootPath, "GeneratedQRCode/qrcode.png") ' Create a QR Code object Dim myQr As QrCode = QrWriter.Write(generateQRCode.QRCodeText) ' Save QR Code as a Bitmap Dim qrImage As AnyBitmap = myQr.Save() ' Save QR Code Bitmap as File qrImage.SaveAs(filePath) Dim fileName As String = System.IO.Path.GetFileName(filePath) ' qr code file Dim imageUrl As String = $"{Me.Request.Scheme}://{Me.Request.Host}{Me.Request.PathBase}" & "/GeneratedQRCode/" & fileName ViewBag.QrCodeUri = imageUrl Catch e1 As Exception Throw End Try Return View() End Function End Class End Namespace $vbLabelText $csharpLabel 代码解释 命名空间和类定义 代码以使用语句开始,这些语句导入必要的命名空间。 GenerateQRCode.Controllers 命名空间包含 QrCodeController 类。 控制器构造函数 QrCodeController 类有一个构造函数,该构造函数接受 IWebHostEnvironment 参数。 此参数由 ASP.NET Core 注入以处理与 web 托管相关的任务。 动作方法 Index():此方法在访问时返回视图(大概是一个 HTML 页面)。 它似乎与 QR 码生成无直接关系。 CreateQRCode(QRCodeModel generateQRCode):此方法是 QR 码生成逻辑的核心。 它接收一个 QRCodeModel 对象(可能包含 QR 码文本)作为参数。 方法内部 构造用于保存生成的 QR 码图像的路径。 使用 QrWriter.Write(generateQRCode.QRCodeText) 创建 QR 码对象。 将 QR 码保存为位图图像。 基于 web 请求详细信息构造图像 URL。 使用图像 URL 设置 ViewBag.QrCodeUri 属性。 如果在此过程中发生任何异常,则会抛出。 二维码生成 实际的 QR 码生成发生在 CreateQRCode 方法中。 QrWriter.Write(generateQRCode.QRCodeText) 调用根据提供的文本创建 QR 码对象。 图像保存 生成的 QR 码使用 qrImage.SaveAs(filePath) 保存为位图图像。 图像文件路径根据 web 根路径和所需的文件名构造。 图像 URL imageUrl 使用 web 请求的方案、主机和路径基创建。 此 URL 指向可以访问生成的 QR 码图像的位置。 总体而言,此控制器处理 QR 码生成、图像的保存和提供图像 URL 以供进一步使用。 向控制器添加视图 要添加新视图,请右键单击 QrCodeController 类中的 CreateQRCode 动作方法。 选择"添加视图"然后选择"Razor 视图"。 点击"添加"按钮。 然后选择先前生成的"创建"模板和模型类。 现在在视图中替换以下代码 @model GenerateQRCode.Models.QRCodeModel @{ ViewData["Title"] = "Generate QR Code"; } <h1>Generate QR Code</h1> <h4>QRCodeModel</h4> <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"> <a href="#" class="btn btn-primary">Create QR Code</a> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt="Your QR Code will appear here." /> </div> </form> </div> </div> <div> <a asp-action="Index">Clear</a> </div> @section Scripts { @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} } @model GenerateQRCode.Models.QRCodeModel @{ ViewData["Title"] = "Generate QR Code"; } <h1>Generate QR Code</h1> <h4>QRCodeModel</h4> <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"> <a href="#" class="btn btn-primary">Create QR Code</a> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt="Your QR Code will appear here." /> </div> </form> </div> </div> <div> <a asp-action="Index">Clear</a> </div> @section Scripts { @{await Html.RenderPartialAsync("_ValidationScriptsPartial");} } model ReadOnly Property () As GenerateQRCode.Models.QRCodeModel ViewData("Title") = "Generate QR Code" End Property 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <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"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt="Your QR Code will appear here." /> </div> </form> </div> </div> <div> <a asp-action="Index"> Clear</a> </div> @section Scripts "Your QR Code will appear here." /> </div> </form> </div> </div> (Of div) <a asp-action="Index"> Clear</a> </div> section Scripts 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <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"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt="Your QR Code will appear here." /> </div> </form> </div> </div> <div> <a asp-action "img-thumbnail" alt="Your QR Code will appear here." /> </div> </form> </div> </div> (Of div) <a asp-action 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <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"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" alt "@ViewBag.QrCodeUri" class="img-thumbnail" alt 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <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"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class="form-group"> <img src="@ViewBag.QrCodeUri" class "form-group"> <img src="@ViewBag.QrCodeUri" class 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <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"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class="form-group"> <img src "btn btn-primary"> Create QR Code</a> </div> <div class="form-group"> <img src 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <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"> <a href="#" class="btn btn-primary"> Create QR Code</a> </div> <div class "#" class="btn btn-primary"> Create QR Code</a> </div> <div class 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <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"> <a href="#" class "form-group"> <a href="#" class 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <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"> <a href "text-danger"></span> </div> <div class="form-group"> <a href 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <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 "QRCodeText" class="text-danger"></span> </div> <div class 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <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 "form-control" /> <span asp-validation-for="QRCodeText" class 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <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="form-control" /> <span asp-validation-for 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <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 "control-label"></label> <input asp-for="QRCodeText" class 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <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="control-label"></label> <input asp-for 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <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 "form-group"> <label asp-for="QRCodeText" class 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <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 "text-danger"></div> <div class="form-group"> <label asp-for 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class="text-danger"></div> <div class "ModelOnly" class="text-danger"></div> <div class 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary="ModelOnly" class "CreateQRCode"> <div asp-validation-summary="ModelOnly" class 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary "col-md-4"> <form asp-action="CreateQRCode"> <div asp-validation-summary 'INSTANT VB WARNING: An assignment within expression was extracted from the following statement: 'ORIGINAL LINE: Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Friend <h1> Generate QR Code</h1> <h4> QRCodeModel</h4> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action "row"> <div class="col-md-4"> <form asp-action 'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator: Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Private Friend (Of h1) Generate QR Code</h1> (Of h4) QRCodeModel</h4> <hr /> <div Class="row"> <div class @ If True Then Await Html.RenderPartialAsync("_ValidationScriptsPartial") End If End Class $vbLabelText $csharpLabel 同样对索引动作方法进行相同操作,以便在应用程序启动时不会抛出 POST 请求错误。 现在在 Program.cs 中更改以下代码以将上述视图设为默认路由。 app.MapControllerRoute( name: "default", pattern: "{controller=QrCode}/{action=Index}" ); app.MapControllerRoute( name: "default", pattern: "{controller=QrCode}/{action=Index}" ); app.MapControllerRoute(name:= "default", pattern:= "{controller=QrCode}/{action=Index}") $vbLabelText $csharpLabel 此操作将默认路由从 HomeController 修改为我们的 QrCodeController。 现在,编译并运行项目。 在文本框中输入任何文本并点击"创建"。这将创建一个新的二维码,如下所示。 为二维码添加样式 QrStyleOptions 用于样式化二维码生成。 [HttpPost] public IActionResult CreateQRCode(QRCodeModel generateQRCode) { try { string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png"); // Create a QR Code object QrCode qrCode = QrWriter.Write(generateQRCode.QRCodeText); QrStyleOptions style = new QrStyleOptions { Dimensions = 300, // px size Margins = 10, // px margins Color = Color.YellowGreen // custom color }; // Save QR Code with style options as a bitmap AnyBitmap qrImage = qrCode.Save(style); // Save QR Code Bitmap to File qrImage.SaveAs(filePath); string fileName = Path.GetFileName(filePath); // qr code file string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName; ViewBag.QrCodeUri = imageUrl; } catch (Exception) { throw; } return View(); } [HttpPost] public IActionResult CreateQRCode(QRCodeModel generateQRCode) { try { string path = Path.Combine(_environment.WebRootPath, "GeneratedQRCode"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string filePath = Path.Combine(_environment.WebRootPath, "GeneratedQRCode/qrcode.png"); // Create a QR Code object QrCode qrCode = QrWriter.Write(generateQRCode.QRCodeText); QrStyleOptions style = new QrStyleOptions { Dimensions = 300, // px size Margins = 10, // px margins Color = Color.YellowGreen // custom color }; // Save QR Code with style options as a bitmap AnyBitmap qrImage = qrCode.Save(style); // Save QR Code Bitmap to File qrImage.SaveAs(filePath); string fileName = Path.GetFileName(filePath); // qr code file string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}" + "/GeneratedQRCode/" + fileName; ViewBag.QrCodeUri = imageUrl; } catch (Exception) { throw; } return View(); } <HttpPost> Public Function CreateQRCode(ByVal generateQRCode As QRCodeModel) As IActionResult Try 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(_environment.WebRootPath, "GeneratedQRCode/qrcode.png") ' Create a QR Code object Dim qrCode As QrCode = QrWriter.Write(generateQRCode.QRCodeText) Dim style As New QrStyleOptions With { .Dimensions = 300, .Margins = 10, .Color = Color.YellowGreen } ' Save QR Code with style options as a bitmap Dim qrImage As AnyBitmap = qrCode.Save(style) ' Save QR Code Bitmap to File qrImage.SaveAs(filePath) Dim fileName As String = System.IO.Path.GetFileName(filePath) ' qr code file Dim imageUrl As String = $"{Me.Request.Scheme}://{Me.Request.Host}{Me.Request.PathBase}" & "/GeneratedQRCode/" & fileName ViewBag.QrCodeUri = imageUrl Catch e1 As Exception Throw End Try Return View() End Function $vbLabelText $csharpLabel 输出 许可(提供试用) 对于想要测试 IronQR 的开发人员,可以在这里获取试用许可证。 这个许可证密钥需要放置在 appSettings.json 文件中。同样会去除上图中显示的水印。 { "IronQR.License.LicenseKey": "My key" } 结论 在本文中,我们探讨了如何在 ASP.NET Core 中使用 IronQR 生成 QR 码。 通过利用 IronQR 的强大功能,开发人员可以轻松地将 QR 码生成功能集成到他们的 web 应用程序中。 无论是用于票务、身份验证还是信息共享,QR 码都提供了一种用于高效传输数据的多功能解决方案。 借助 IronQR,在 ASP.NET Core 中创建和定制 QR 码从未如此简单。 开始将二维码生成功能集成到您的 ASP.NET Core 项目中,开启动态数据编码和共享的无限可能。 常见问题解答 如何在 ASP.NET Core 中生成 QR 码? 要在 ASP.NET Core 中生成 QR 码,可以使用 IronQR 库。首先在 Visual Studio 中创建一个新的 ASP.NET 项目,通过包管理器安装 IronQR,并实现代码以使用其用户友好的 API 生成 QR 码。 在 ASP.NET Core 中可以对 QR 码进行哪些自定义选项? IronQR 提供了多种 QR 码自定义选项,包括调整大小、调整边距、更改颜色和添加徽标。这些可以通过 QrStyleOptions 类进行管理。 在 ASP.NET Core 中生成 QR 码的错误校正是如何工作的? IronQR 允许您在生成 ASP.NET Core 中的 QR 码时管理错误校正级别。这确保了 QR 码具有所需的错误恢复水平,这对于可靠扫描至关重要。 我可以从 ASP.NET Core 中的不同图像格式读取 QR 码吗? 可以,使用 ASP.NET Core 中的 IronQR,您可以从各种图像格式中读取 QR 码,例如 jpg、png、svg、bmp、gif、tif 和 tiff,以及 System.Drawing 位图和 IronDrawing 图像 (AnyBitmap)。 在没有完整许可证的情况下可以测试 IronQR 吗? 可以,您可以从 Iron Software 网站获取 IronQR 的试用许可证。试用版允许您测试库并在测试阶段通过将许可证放入 appSettings.json 文件中移除生成 QR 码上的水印。 在 Web 应用程序中使用 QR 码有何好处? QR 码对 Web 应用程序有益,因为它们允许高效的数据存储和传输。它们尤其适用于票务系统、认证和库存管理等应用,提供了一种动态编码和共享信息的方式。 机器学习如何增强 ASP.NET Core 中的 QR 码检测? IronQR 使用先进的定制机器学习模型进行 QR 码检测,确保代码识别的高精度和可靠性。对于更轻量级解决方案的用户,还提供了非 ML 精简模式。 Jordi Bardia 立即与工程团队聊天 软件工程师 Jordi 最擅长 Python、C# 和 C++,当他不在 Iron Software 利用这些技能时,他就在游戏编程。分享产品测试、产品开发和研究的责任,Jordi 在持续的产品改进中增加了巨大的价值。多样的经验使他面临挑战并保持投入,他表示这是在 Iron Software 工作的最喜欢的方面之一。Jordi 在佛罗里达州迈阿密长大,并在佛罗里达大学学习计算机科学和统计学。 相关文章 已更新九月 18, 2025 如何在 C# 中从图像读取 QR 在本指南中,我们将引导您如何使用专为 .NET 构建的高性能 QR 代码库 IronQR,只需几行 C# 代码即可从图像读取 QR 代码。 阅读更多 已更新八月 20, 2025 如何使用 .NET MAUI 进行 QR 代码扫描 本文将引导您使用 IronQR 创建 .NET MAUI 条形码扫描器和 QR 代码阅读器。 阅读更多 已更新七月 28, 2025 如何在 Visual Studio 中生成 QR 代码 或者,您可以通过 Visual Studio 的 NuGet 软件包管理器界面搜索“IronQR”并选择最新稳定版本。 阅读更多 如何使用 .NET MAUI 进行 QR 代码扫描如何在 ASP .NET 中扫描 QR 代码
已更新九月 18, 2025 如何在 C# 中从图像读取 QR 在本指南中,我们将引导您如何使用专为 .NET 构建的高性能 QR 代码库 IronQR,只需几行 C# 代码即可从图像读取 QR 代码。 阅读更多
已更新七月 28, 2025 如何在 Visual Studio 中生成 QR 代码 或者,您可以通过 Visual Studio 的 NuGet 软件包管理器界面搜索“IronQR”并选择最新稳定版本。 阅读更多