使用 IRONQR 如何在 ASP .NET Core 中產生 QR 碼 Jordi Bardia 更新:6月 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 應用程式建立框架,提供了強大的二維碼產生功能。 在本文中,我們將深入探討如何使用IronQR ( Iron Software出品的強大二維碼產生函式庫)在 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. 用於二維碼檢測的機器學習模型 IronQR 使用先進的客製化機器學習模型來偵測二維碼。 這確保了代碼識別的準確性和可靠性。 此外,也為喜歡輕便方式的使用者提供了纖薄模式(非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提供詳細的錯誤訊息,並支援自訂二維碼糾錯等級。 掌握了這些知識後,讓我們開始在 ASP.NET Core 中開發產生二維碼的應用程式。 步驟 1:使用 Visual Studio 建立一個新的 ASP.NET 項目 在深入探討二維碼產生之前,讓我們先建立一個新的 ASP.NET Core 專案。 以下是啟動新專案的步驟: 首先在 Visual Studio 中建立一個新項目,然後選擇 ASP.NET Core Web 應用程式範本。 如何在 ASP.NET Core 中產生二維碼:圖 1 - 選擇 ASP.NET Core Web 應用程式模板 請提供項目名稱和地點 如何在 ASP.NET Core 中產生二維碼:圖 2 - 為專案命名並選擇儲存位置 選擇所需的 .NET 版本。 如何在 ASP.NET Core 中產生二維碼:圖 3 - 選擇正確的 .NET 版本。 點擊"建立"按鈕,即可根據模板產生應用程式程式碼。 如何在 ASP.NET Core 中產生二維碼:圖 4 - 按一下"建立"按鈕以產生模板程式碼 步驟 2:從軟體套件管理器安裝 IronQR 庫 依照以下所示,從 Visual Studio 套件管理器安裝IronQR庫。 如何在 ASP.NET Core 中產生二維碼:圖 5 - 使用 Visual Studio 套件管理器搜尋 IronOCR 並安裝它 IronQR也可以使用 NuGet 套件管理器進行安裝。 如何在 ASP.NET Core 中產生二維碼:圖 6 - 使用 NuGet 套件管理器搜尋 IronOCR 步驟 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 建立二維碼控制器 若要新增新的控制器,請右鍵單擊控制器資料夾,並提供如下所示的名稱。 如何在 ASP.NET Core 中產生二維碼:圖 7 - 按一下資料夾新增控制器並為其命名 選擇空控制器。 如何在 ASP.NET Core 中產生二維碼:圖 8 - 點選提示方塊中的"空控制器" 請提供姓名。 如何在 ASP.NET Core 中產生二維碼:圖 9 - 命名控制器 接下來,將以下程式碼整合到控制器中。 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 程式碼解釋 命名空間和類別定義 程式碼以 using 語句開頭,這些語句導入必要的命名空間。 GenerateQRCode.Controllers命名空間包含QrCodeController類別。 控制器建構函數 QrCodeController類別有一個建構函數,該構造函數接受一個IWebHostEnvironment參數。 此參數由 ASP.NET Core 注入,用於處理與 Web 託管相關的任務。 行動方法 Index() :存取此方法時會傳回一個視圖(可能是 HTML 頁面)。 這似乎與二維碼生成沒有直接關係。 CreateQRCode(QRCodeModel generateQRCode) : 此方法是二維碼產生邏輯的核心。 它接收一個QRCodeModel物件(大概包含二維碼文字)作為參數。 在方法內部 建立用於保存生成的二維碼圖像的路徑。 使用QrWriter.Write(generateQRCode.QRCodeText)建立一個 QR 碼物件。 將二維碼儲存為點陣圖影像。 根據網頁請求詳情建立圖像 URL。 將ViewBag.QrCodeUri屬性設定為圖片 URL。 如果在此過程中發生任何異常,則會拋出這些異常。 二維碼生成 實際的二維碼產生是在CreateQRCode方法中完成的。 QrWriter.Write(generateQRCode.QRCodeText)呼叫會根據所提供的文字建立一個二維碼物件。 影像保存 使用qrImage.SaveAs(filePath)將產生的二維碼儲存為點陣圖影像。 圖片檔案路徑是根據網站根路徑和所需的檔案名稱建構的。 圖片網址 imageUrl由 Web 要求的協定、主機和路徑基址構成。 此網址指向可存取產生的二維碼影像的位置。 總的來說,該控制器負責產生二維碼、保存圖像,並提供圖像 URL 以供進一步使用。 將視圖新增至控制器 若要新增視圖,請右鍵點選QrCodeController類別中的CreateQRCode操作方法。 如何在 ASP.NET Core 中產生二維碼:圖 10 - 在QrCodeController類別中新增視圖 選擇"新增視圖",然後選擇"Razor視圖"。 點擊"新增"按鈕。 如何在 ASP.NET Core 中產生二維碼:圖 11 - 選擇"新增視圖"選項,然後選擇"Razor 視圖",再選擇"新增"。 然後選擇之前產生的"創建"模板和模型類別。 如何在 ASP.NET Core 中產生二維碼:圖 12 - 選擇先前產生的Create模板 現在將以下程式碼替換到視圖中 @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 對 index 操作方法也進行相同的操作,這樣當應用程式啟動時,就不會因 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 。 現在,編譯並執行該專案。 如何在 ASP.NET Core 中產生二維碼:圖 13 - 專案範例首頁 在文字方塊中輸入任意文本,然後點擊"建立"。這將建立一個新的二維碼,如下所示。 如何在 ASP.NET Core 中產生二維碼:圖 14 - 輸入任何文字並點擊"建立"按鈕,即可使用 IronQR 建立新的二維碼。 為二維碼添加樣式 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 輸出 如何在 ASP.NET Core 中產生二維碼:圖 15 - 以程式設計方式修改二維碼顏色 授權(可試用) 對於想要試用 IronQR 的開發者,可以點擊此處取得試用授權。 需要將此許可證金鑰新增至appSettings.json檔案。這樣做可以移除上圖所示的浮水印。 { "IronQR.License.LicenseKey": "My key" } 結論 在本文中,我們探討如何使用 IronQR 在 ASP.NET Core 中產生二維碼。 利用 IronQR 的強大功能,開發人員可以輕鬆地將二維碼產生功能整合到他們的 Web 應用程式中。 無論是票務、身份驗證還是資訊共享,二維碼都提供了一種高效傳輸資料的多功能解決方案。 借助 IronQR,在 ASP.NET Core 中建立和自訂二維碼從未如此簡單。 將二維碼產生功能整合到您的 ASP.NET Core 專案中,開啟動態資料編碼和共享的無限可能。 常見問題解答 如何在 ASP.NET Core 中產生 QR 碼? 若要在 ASP.NET Core 中產生 QR 碼,您可以使用 IronQR 函式庫。首先在 Visual Studio 中建立新的 ASP.NET 專案,透過套件管理員安裝 IronQR,並使用其友善的 API 實作程式碼以產生 QR 碼。 ASP.NET Core 中的 QR 碼有哪些自訂選項? IronQR 為 ASP.NET Core 中的 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 Bitmaps 和 IronDrawing Images (AnyBitmap)。 是否可以在沒有完整授權的情況下測試 IronQR? 是的,您可以從 Iron Software 網站取得 IronQR 的試用授權。試用版允許您在測試階段測試函式庫,並透過在 appSettings.json 檔案中放置授權,移除所產生 QR 碼的水印。 在 Web 應用程式中使用 QR 碼有什麼好處? QR 代碼有利於網路應用程式,因為它們可以有效地儲存和傳輸資料。它們在票務系統、驗證和庫存管理等應用程式中特別有用,提供了一種動態的方式來編碼和分享資訊。 機器學習如何增強 ASP.NET Core 中的 QR 碼偵測? IronQR 利用先進的客製化機器學習模型進行 QR 代碼偵測,確保代碼辨識的高準確性與可靠性。對於偏好更輕量級解決方案的使用者,我們也提供非 ML 的 Slim Mode。 Jordi Bardia 立即與工程團隊聊天 軟體工程師 Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。 相關文章 更新9月 18, 2025 如何在 C# 中從影像讀取 QR 在本指南中,我們將教您如何使用 IronQR(一個專門為 .NET 建立的高效能 QR 碼函式庫,僅需幾行 C# 程式碼即可從影像讀取 QR 碼)。 閱讀更多 更新8月 20, 2025 如何使用 .NET MAUI QR Code 掃描器 本篇文章將教您使用 IronQR for .NET 建立一個 .NET MAUI 條碼掃描器和 QR 碼閱讀器。 閱讀更多 更新7月 28, 2025 如何在 Visual Studio 中產生 QR 碼 另外,您也可以使用 Visual Studio NuGet Package Manager 介面,搜尋 "IronQR" 並選擇最新的穩定版本。 閱讀更多 如何使用 .NET MAUI QR Code 掃描器如何在 ASP .NET 中掃描 QR 碼
更新9月 18, 2025 如何在 C# 中從影像讀取 QR 在本指南中,我們將教您如何使用 IronQR(一個專門為 .NET 建立的高效能 QR 碼函式庫,僅需幾行 C# 程式碼即可從影像讀取 QR 碼)。 閱讀更多
更新8月 20, 2025 如何使用 .NET MAUI QR Code 掃描器 本篇文章將教您使用 IronQR for .NET 建立一個 .NET MAUI 條碼掃描器和 QR 碼閱讀器。 閱讀更多
更新7月 28, 2025 如何在 Visual Studio 中產生 QR 碼 另外,您也可以使用 Visual Studio NuGet Package Manager 介面,搜尋 "IronQR" 並選擇最新的穩定版本。 閱讀更多