在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
在當今快速變化的數位環境中,生成 QR 碼已成為高效資訊共享的重要工具。 這些緊湊的二維條碼能夠儲存廣泛的數據,包括網址、文本、聯絡資訊、產品細節等等,在現代通信中扮演著關鍵角色。 將QR碼生成功能整合到您的ASP.NET MVC應用程式中,可以通過流暢地生成QR碼來增強用戶體驗,優化互動並促進資訊的輕鬆交換。
如果您正在開發 ASP.NET MVC 應用程式並希望整合 QR code 生成功能,IronBarcode是一個出色的庫,可簡化過程。 在本文中,我們將探討如何使用 Iron Barcode 庫在 ASP.NET MVC 中生成 QR 碼。
IronBarcode 是一個功能強大且功能豐富的 QR Code 生成和識別庫,適用於 .NET 應用程式。 使用IronBarcode,開發者可以輕鬆地將條碼和QRCode功能整合到他們的ASP.NET MVC專案中,包括生成QRCode的能力。 該庫提供了一套全面的工具和 API,簡化了生成和自訂 QR 碼的過程,使開發人員能夠根據其特定需求進行調整。
IronBarcode 提供對各種條碼類型的廣泛支持,包括 QR 碼,這使其成為需要 QR 碼生成功能的項目的理想選擇。 它為開發人員提供了靈活性,可以指定要編碼的數據,控制生成的 QR 碼的大小和解析度,甚至添加顏色和標誌等視覺樣式元素。 該庫確保高品質的條碼生成,並精確控制 QR 碼外觀的各個方面。
除了生成QR碼之外,IronBarcode還包含強大的條碼讀取和解碼功能。 它支持掃描和提取 QR 碼中的數據,使應用程式能夠處理其中編碼的信息。 此功能對於需要條碼掃描和數據提取的情境非常有益,例如庫存管理、票務系統和移動應用程式。
現在,讓我們在 ASP .NET Core MVC Web 應用程式中建立一個生成 QR 碼的專案。
在深入了解實作細節之前,讓我們確保您的 ASP.NET MVC 專案已完成設置並準備就緒。 無論您是開始一個新專案或正在處理現有專案,以下步驟將指導您將 IronBarcode 程式庫整合到您的應用程式中。 在我的情況下,我創建了一個新項目。
創建新項目的步驟如下:
打開 Microsoft Visual Studio 2022。
在開始頁面上,點擊「Create a new project」或從上方選單進入「File」>「New」>「Project」。
在「建立新專案」窗口中,您將看到可供選擇的不同專案範本。 選擇專案範本 "ASP.NET Core web 應用程式(模型-視圖-控制器)「然後點擊「下一步」。
輸入專案的名稱和位置。 選擇一個適合的檔案儲存位置來保存專案文件。
選擇所需的框架版本。 Visual Studio 通常建議使用最新的穩定版本,但如果需要,您可以選擇其他版本。 我選擇了.NET 7
根據您的需求,自訂任何額外的專案設置,例如驗證選項或專案資料夾。
按「建立」以建立專案。
Visual Studio 會生成專案檔案並開啟解決方案總管,您可以在其中查看專案結構並開始撰寫程式碼。
現在,我們需要將 Iron Barcode 庫安裝到我們的應用程式中。
首先,在 Visual Studio 中打開 NuGet 套件管理器主控台,然後運行以下命令:
Install-Package BarCode
此命令將安裝 Iron Barcode 庫並將必要的引用添加到您的項目中。
現在,讓我們編寫程式碼來生成QR碼。
QrCode
模型在 Model 資料夾內建立一個 Model 類別,並撰寫以下程式碼。
public class QRCodeModel
{
[Display(Name = "Enter QR Code Text")]
public string QRCodeText
{
get;
set;
}
}
public class QRCodeModel
{
[Display(Name = "Enter QR Code Text")]
public string QRCodeText
{
get;
set;
}
}
Public Class QRCodeModel
<Display(Name := "Enter QR Code Text")>
Public Property QRCodeText() As String
End Class
在您的 ASP.NET MVC 專案中,建立一個名為 QRCodeController 的新控制器。 為此,請在專案結構中的 Controllers 資料夾上點擊右鍵,選擇「新增」,然後選擇「控制器」。從可用選項中,選擇「MVC 控制器 - 空」。
在 QrCodeController
中撰寫以下代碼:
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(_environment.WebRootPath, "GeneratedQRCode/qrcode.png");
barcode.SaveAsPng(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();
}
}
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(_environment.WebRootPath, "GeneratedQRCode/qrcode.png");
barcode.SaveAsPng(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();
}
}
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(_environment.WebRootPath, "GeneratedQRCode/qrcode.png")
barcode.SaveAsPng(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
此程式碼設置了一個可以生成 QR 碼的控制器。 當呼叫 CreateQRCode
動作時,它會取得 QR 碼的文本,生成 QR 碼圖像,保存圖像,並在視圖中提供用於顯示的圖像 URL。 更詳細如下:
IWebHostEnvironment
參數以訪問網路託管環境。CreateQRCode
操作返回一個視圖。CreateQRCode
動作搭配[HttpPost
]屬性接收一個 QRCodeModel
參數,其中包含 QR 碼文本。QRCodeWriter
類生成 QR 碼。GeneratedQRCode
資料夾中。GeneratedQRCode
資料夾不存在,系統將會創建它。ViewBag.QrCodeUri
屬性中以供視圖使用。CreateQRCode
視圖現在,要新增一個新的視圖,請在 QrCodeController
類別中的 CreateQRCode
動作方法上點擊右鍵。 選擇「Add View」,然後選擇「Razor View」,接下來點擊「Add」按鈕。
將出現一個新視窗,如下所示。
撰寫視圖名稱,選擇模板 "Create",並選擇我們新創建的模型類別 QrCodeModel
。 點擊新增按鈕。 將創建視圖。 將您的視圖替換為以下代碼。
@model QRCodeMVC.Models.QRCodeModel
@{
ViewData ["Title"] = "CreateQRCode";
}
<h1>Create QRCode in ASP.NET MVC</h1>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="CreateQRCodeView">
<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">
<img src="@ViewBag.QrCodeUri" class="img-thumbnail" />
</div>
</form>
</div>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
@model QRCodeMVC.Models.QRCodeModel
@{
ViewData ["Title"] = "CreateQRCode";
}
<h1>Create QRCode in ASP.NET MVC</h1>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="CreateQRCodeView">
<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">
<img src="@ViewBag.QrCodeUri" class="img-thumbnail" />
</div>
</form>
</div>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
model ReadOnly Property () As QRCodeMVC.Models.QRCodeModel
ViewData ("Title") = "CreateQRCode"
End Property
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <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"> <img src="@ViewBag.QrCodeUri" class="img-thumbnail" /> </div> </form> </div> </div> @section Scripts
"@ViewBag.QrCodeUri" class="img-thumbnail" /> </div> </form> </div> </div> section Scripts
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <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"> <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 Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <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"> <img src
"btn btn-primary" /> </div> <div class="form-group"> <img src
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <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
"Create" class="btn btn-primary" /> </div> <div class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <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
"submit" value="Create" class
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <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
"form-group"> <input type="submit" value
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <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
"text-danger"></span> </div> <div class="form-group"> <input type
'INSTANT VB WARNING: An assignment within expression was extracted from the following statement:
'ORIGINAL LINE: Private Private Private Private Private Private Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <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 Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <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 Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <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 Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <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 Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <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 Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <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 Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <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 Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <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 Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <div asp-validation-summary="ModelOnly" class
"CreateQRCodeView"> <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 Friend <h1> Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class="col-md-4"> <form asp-action="CreateQRCodeView"> <div asp-validation-summary
"col-md-4"> <form asp-action="CreateQRCodeView"> <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 Friend <h1> Create QRCode in ASP.NET MVC</h1> <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 Friend (Of h1) Create QRCode in ASP.NET MVC</h1> <hr /> <div Class="row"> <div class
@
If True Then
Await Html.RenderPartialAsync("_ValidationScriptsPartial")
End If
End Class
現在,讓我們移動到 program.cs 類別並更改預設的 Controller 路由。
app.MapControllerRoute(
name: "default",
pattern: "{controller=QrCode}/{action=CreateQRCode}"
);
app.MapControllerRoute(
name: "default",
pattern: "{controller=QrCode}/{action=CreateQRCode}"
);
app.MapControllerRoute(name:= "default", pattern:= "{controller=QrCode}/{action=CreateQRCode}")
這將把預設路由從 HomeController
更改為我們的 QrCode
控制器。
現在,編譯並運行專案。
在文字框中輸入文字,然後點擊創建按鈕。 如下面所示,將生成 QR 碼並顯示在螢幕上。
現在,我們透過添加註釋文字、QR碼值以及更改QR碼顏色來為我們的條形碼添加視覺樣式。
在 CreateQrCode
Action 方法中加入以下程式碼行。
barcode.AddAnnotationTextAboveBarcode("QR Code Generated by Iron PDF");
barcode.AddBarcodeValueTextBelowBarcode();
barcode.ChangeBackgroundColor(Color.White);
barcode.ChangeBarCodeColor(Color.MediumVioletRed);
barcode.AddAnnotationTextAboveBarcode("QR Code Generated by Iron PDF");
barcode.AddBarcodeValueTextBelowBarcode();
barcode.ChangeBackgroundColor(Color.White);
barcode.ChangeBarCodeColor(Color.MediumVioletRed);
barcode.AddAnnotationTextAboveBarcode("QR Code Generated by Iron PDF")
barcode.AddBarcodeValueTextBelowBarcode()
barcode.ChangeBackgroundColor(Color.White)
barcode.ChangeBarCodeColor(Color.MediumVioletRed)
現在,運行專案並生成 QR Code。
在 ASP.NET MVC 中,整合 IronBarcode 很簡單。 它提供了使用者友好的介面,使操作 QR 碼變得簡單。 通過利用IronBarcode,您可以增強您的應用程式,添加QR碼功能,使用戶能夠方便地分享和訪問信息。 IronBarcode 是一個有價值的庫,它簡化了在 ASP.NET MVC 中生成 QR Code 和讀取 QR Code 的過程。 它使開發人員能夠創建動態應用程式,利用 QR 碼的力量來進行高效的數據共享和檢索。
IronBarcode 免費供個人使用,但對於商業用途,你需要購買其商業授權隨附免費試用. 您也可以在获得完整的情形下享受大幅折扣。Iron Suite. Iron Suite 是一套全面的 .NET 軟體元件集合,旨在簡化開發任務並增強功能。 它提供了五個強大的庫,包括 Iron Barcode,IronOCR, IronPDF, IronXL,和Iron Webscraper使開發人員能夠無縫地處理條碼、光學字符識別、PDF處理、Excel和CSV文件。 如果您選擇購買完整的 Iron Suite,您將以兩個產品的價格獲得全部五個產品。