Comment générer des codes QR dans ASP.NET Core
Les codes QR sont devenus partie intégrante de la technologie moderne, offrant un moyen pratique de stocker et de transmettre des informations. En développement web, les générateurs de codes QR comme celui que nous allons implémenter avec IronQR dans ASP.NET Core offrent des fonctionnalités robustes pour la création dynamique de codes QR. Les générateurs de codes QR sont indispensables pour diverses applications telles que les systèmes de billetterie, l'authentification, la gestion des stocks, et bien plus encore. Cet article explore le processus de création de codes QR dans ASP.NET Core à l'aide d'IronQR, une bibliothèque puissante conçue à cet effet. ASP.NET Core, framework polyvalent pour la création d'applications web, offre des fonctionnalités robustes pour la génération de codes QR. Dans cet article, nous allons explorer le processus de création de codes QR dans ASP.NET Core à l'aide d'IronQR , une puissante bibliothèque de génération de codes QR d' Iron Software .
Comment générer des codes QR dans ASP.NET Core
- Créez un projet ASP.Net à l'aide de Visual Studio.
- Installez la bibliothèque IronQR à partir du Package Manager.
- Générer un code QR
- Générer un code QR avec mise en forme
Comprendre IronQR
IronQR est une bibliothèque de génération de codes QR haute performance pour les applications .NET. Elle fournit une API simple et intuitive pour générer des codes QR avec diverses options de personnalisation. IronQR prend en charge .NET Standard, ce qui le rend compatible avec un large éventail de plateformes, notamment ASP.NET Core. Avec IronQR, les développeurs peuvent générer sans effort des codes QR avec différents types de données, niveaux de correction d'erreurs, tailles et formats.
Caractéristiques principales
1. Lecture et création de codes QR
IronQR vous permet de générer et de lire facilement les codes QR. Que vous ayez besoin de créer des codes QR dynamiquement ou d'extraire des informations de codes existants, cette bibliothèque répond à tous vos besoins.
2. API conviviale
La bibliothèque fournit une API conviviale qui permet aux développeurs d'intégrer rapidement la fonctionnalité des codes-barres dans leurs projets .NET. Vous pouvez commencer à utiliser les codes QR en quelques minutes seulement.
3. Compatibilité
IronQR prend en charge différentes versions de .NET, notamment :
- C#, VB .NET, F#
- .NET Core (8, 7, 6, 5 et 3.1+)
- .NET Standard (2.0+)
- .NET Framework (4.6.2+)
Il couvre un large éventail de types de projets, notamment les applications web (Blazor et WebForms), mobiles (Xamarin et MAUI), de bureau (WPF et MAUI) et les applications console.
4. Modèle d'apprentissage automatique pour la détection des codes QR
IronQR utilise un modèle d'apprentissage automatique personnalisé et avancé pour détecter les codes QR. Cela garantit une reconnaissance de code précise et fiable. De plus, une option Slim Mode (non-ML) est disponible pour ceux qui préfèrent une approche légère.
5. Lecture des codes QR
Vous pouvez lire les codes QR à partir de différents formats d'image, notamment :
- Images (jpg, png, svg, bmp)
- Images multipages (gif, tif, tiff)
System.DrawingBitmaps- Images de IronDrawing (
AnyBitmap)
6. Écriture des codes QR
IronQR vous permet de créer des codes QR pour différents types de documents, tels que :
- Images (jpg, png, gif, tiff, bmp)
System.DrawingImages- Flux (
MemoryStream,byte[]) - PDF (Tampon sur PDF existant)
7. Style des codes QR
Personnalisez les codes QR en les redimensionnant, en ajustant les marges et les bordures, en changeant les couleurs et en ajoutant des logos.
8. Gestion et correction des erreurs
IronQR fournit des messages d'erreur détaillés et prend en charge des niveaux de correction d'erreurs QR personnalisés.
Forts de ces connaissances, commençons par l'application permettant de générer un code QR en ASP.NET Core.
Étape 1 : Créez un nouveau projet ASP.NET à l'aide de Visual Studio
Avant de nous plonger dans la génération de codes QR, commençons par configurer un nouveau projet ASP.NET Core. Voici les étapes à suivre pour lancer un nouveau projet :
Commencez par créer un nouveau projet dans Visual Studio et sélectionnez le modèle d'application Web ASP.Net Core.

Indiquez le nom et l'emplacement du projet.

Sélectionnez la version .NET requise.

Cliquez sur le bouton " Créer " pour générer le code de l'application à partir du modèle.

Étape 2 : Installez la bibliothèque IronQR à partir du Package Manager
Installez la bibliothèque IronQR à partir du gestionnaire de packages de Visual Studio comme indiqué ci-dessous.

IronQR peut également être installé à l'aide du gestionnaire de packages NuGet.

Étape 3 : Générer un code QR
Maintenant, créons une application de code QR.
Créer le modèle 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
Créer un contrôleur de codes QR
Pour ajouter une nouvelle manette, cliquez avec le bouton droit sur le dossier des manettes et indiquez un nom comme indiqué ci-dessous.

Sélectionnez le contrôleur vide.

Indiquez un nom.

Ensuite, intégrez le code suivant dans le contrôleur.
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
Explication du code
Définition d'espace de noms et de classe
Le code commence par des instructions using, qui importent les espaces de noms nécessaires. L'espace de noms GenerateQRCode.Controllers contient la classe QrCodeController.
Constructeur de contrôleur
La classe QrCodeController possède un constructeur qui prend un paramètre IWebHostEnvironment. Ce paramètre est injecté par ASP.NET Core pour gérer les tâches liées à l'hébergement web.
Méthodes d'action
Index(): Cette méthode renvoie une vue (vraisemblablement une page HTML) lorsqu'elle est accédée. Cela ne semble pas être directement lié à la génération de codes QR.CreateQRCode(QRCodeModel generateQRCode): Cette méthode est au cœur de la logique de génération du code QR. Il reçoit un objetQRCodeModel(contenant vraisemblablement le texte du code QR) comme paramètre.
À l'intérieur de la méthode
- Crée un chemin pour enregistrer l'image du code QR généré.
- Crée un objet code QR en utilisant
QrWriter.Write(generateQRCode.QRCodeText). - Enregistre le code QR sous forme d'image bitmap.
- Construit une URL d'image à partir des détails de la requête web.
- Définit la propriété
ViewBag.QrCodeUriavec l'URL de l'image. - Si des exceptions surviennent au cours de ce processus, elles sont levées.
Génération de codes QR
La génération du code QR proprement dite a lieu dans la méthode CreateQRCode. L'appel QrWriter.Write(generateQRCode.QRCodeText) crée un objet code QR basé sur le texte fourni.
Enregistrement d'image
Le code QR généré est enregistré sous forme d'image bitmap en utilisant qrImage.SaveAs(filePath). Le chemin d'accès au fichier image est construit à partir du chemin racine du site web et du nom de fichier souhaité.
URL de l'image
Le imageUrl est construit en utilisant le schéma, l'hôte et le chemin de base de la requête Web. Cette URL indique l'emplacement où l'image du code QR généré peut être consultée. Globalement, ce contrôleur gère la génération du code QR, l'enregistrement de l'image et la fourniture d'une URL d'image pour une utilisation ultérieure.
Ajouter une vue au contrôleur
Pour ajouter une nouvelle vue, cliquez avec le bouton droit sur la méthode d'action CreateQRCode dans la classe QrCodeController.

Sélectionnez " Ajouter une vue ", puis " Vue Razor ". Cliquez sur le bouton " Ajouter ".

Ensuite, sélectionnez le modèle "Créer" et la classe Modèle générée précédemment.

Remplacez maintenant le code ci-dessous dans la vue
@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
Faites de même pour la méthode d'action index, afin que l'application ne génère pas d'erreur lors du lancement de la requête POST.
Maintenant, dans Program.cs, modifiez le code suivant pour faire de la vue ci-dessus la route par défaut.
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}")
Cette action modifiera la route par défaut de HomeController à notre QrCodeController.
Maintenant, compilez et exécutez le projet.

Saisissez du texte dans la zone de texte et cliquez sur " Créer ". Cela créera un nouveau code QR comme indiqué ci-dessous.

Ajouter du style aux codes QR
QrStyleOptions sont utilisés pour styliser la génération du code QR.
[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
Sortie

Licence (Essai disponible)
Pour les développeurs qui souhaitent tester IronQR, une licence d'essai est disponible ici . Cette clé de licence doit être placée dans le fichier appSettings.json. Cela permettra de supprimer le filigrane visible sur les images ci-dessus.
{
"IronQR.License.LicenseKey": "My key"
}
Conclusion
Dans cet article, nous avons exploré comment générer des codes QR dans ASP.NET Core en utilisant IronQR. En tirant parti de la puissance d'IronQR, les développeurs peuvent facilement intégrer la fonctionnalité de génération de codes QR dans leurs applications web. Que ce soit pour la billetterie, l'authentification ou le partage d'informations, les codes QR offrent une solution polyvalente pour transmettre efficacement des données. Avec IronQR, créer et personnaliser des codes QR dans ASP.NET Core n'a jamais été aussi simple. Commencez à intégrer la génération de codes QR dans vos projets ASP.NET Core et découvrez un monde de possibilités pour l'encodage et le partage dynamiques de données.
Questions Fréquemment Posées
Comment puis-je générer des codes QR dans ASP.NET Core ?
Pour générer des codes QR dans ASP.NET Core, vous pouvez utiliser la bibliothèque IronQR. Commencez par créer un nouveau projet ASP.NET dans Visual Studio, installez IronQR via le gestionnaire de packages et implémentez le code pour générer des codes QR en utilisant son API conviviale.
Quelles options de personnalisation sont disponibles pour les codes QR dans ASP.NET Core ?
IronQR offre plusieurs options de personnalisation pour les codes QR dans ASP.NET Core, y compris le redimensionnement, l'ajustement des marges, le changement de couleurs et l'ajout de logos. Ceux-ci peuvent être gérés en utilisant la classe QrStyleOptions.
Comment fonctionne la correction d'erreur lors de la génération de codes QR avec ASP.NET Core ?
IronQR vous permet de gérer les niveaux de correction d'erreur lors de la génération de codes QR dans ASP.NET Core. Cela garantit que les codes QR ont le niveau souhaité de résistance aux erreurs, essentiel pour un balayage fiable.
Puis-je lire des codes QR à partir de différents formats d'image dans ASP.NET Core ?
Oui, avec IronQR dans ASP.NET Core, vous pouvez lire des codes QR à partir de divers formats d'image tels que jpg, png, svg, bmp, gif, tif et tiff, ainsi que des Bitmaps System.Drawing et des Images IronDrawing (AnyBitmap).
Est-il possible de tester IronQR sans licence complète ?
Oui, vous pouvez obtenir une licence d'essai de IronQR sur le site Web de Iron Software. L'essai vous permet de tester la bibliothèque et de supprimer les filigranes des codes QR générés pendant la phase de test en plaçant la licence dans le fichier appSettings.json.
Quels sont les avantages d'utiliser des codes QR dans les applications web ?
Les codes QR sont bénéfiques pour les applications web car ils permettent un stockage et une transmission efficaces des données. Ils sont particulièrement utiles dans des applications telles que les systèmes de billetterie, l'authentification et la gestion des stocks, offrant un moyen dynamique de coder et de partager des informations.
Comment l'apprentissage automatique améliore-t-il la détection des codes QR dans ASP.NET Core ?
IronQR utilise un modèle d'apprentissage automatique personnalisé avancé pour la détection des codes QR, garantissant une haute précision et fiabilité dans la reconnaissance des codes. Pour les utilisateurs qui préfèrent une solution plus légère, un mode Slim non-ML est également disponible.




