
How to Dynamically Generate and Display Barcode in ASP.NET MVC
ASP.NET MVC 是一个流行的Web开发框架,允许开发人员构建稳健且动态的Web应用程序。 Web应用程序中的一个常见要求是能够生成和显示条形码图像。 条形码图像用于将数据表示为机器可读格式,并且可以通过条形码扫描器读取。
Dynamically generating and displaying barcode images in ASP.NET MVC can be achieved using the market-leading C# library, IronBarcode. 此库提供API,允许开发人员轻松地产生跨平台的条形码图像,支持多种格式,如Code 39、Code 128和QR Code。 从.NET 6开始,不依赖于System.Drawing.Common和.NET Graphics API,这些是Windows特定的,IronBarcode允许跨平台功能,并提高了源码兼容性。
IronBarcode
IronBarcode是一个流行的.NET条形码库,在.NET应用程序中提供了一系列用于创建、读取和操作条形码图像的功能。 该库由Iron Software开发和维护,这是一家专门从事.NET组件和库的软件开发公司。 IronBarcode支持多种条形码格式,包括Code 128、Code 39、QR Code、Data Matrix和PDF417。该库还提供生成带有自定义尺寸、颜色和字体的条形码,以及为条形码图像添加文本和徽标的功能。
除条形码生成外,IronBarcode还包括读取和解码条形码图像的功能。 该库可以从图像、PDF文档和实时相机源中读取和解码条形码。 它支持1D和2D条形码格式,甚至可以识别被部分遮挡或损坏的条形码。
前提条件
在.NET应用程序中使用IronBarcode之前,需要满足一些先决条件。
- .NET Framework或.NET Core: IronBarcode设计为兼容.NET Framework和.NET Core。 确保您的开发环境已安装适当的.NET版本。
- Visual Studio: IronBarcode可以与Visual Studio集成,以便于开发和测试。 可以使用Visual Studio Community、Professional或Enterprise版本。 可以从Visual Studio网站下载。
- IronBarcode库:从Iron Software网站或通过NuGet包管理器下载并安装IronBarcode库。 可以使用NuGet包管理器控制台通过运行以下命令来安装该库:
Install-Package BarCode。
IronBarcode在开发中免费使用,但必须进行授权以用于商业和部署目的。 您可以尝试免费试用以测试其所有功能。
创建一个新的ASP.NET MVC项目
打开Visual Studio并点击创建新项目。

在新窗口中,查找并选择"ASP.NET MVC(Web应用模型视图控制器)",然后点击下一步按钮。

输入新项目的名称和位置,然后点击下一步。

选择您想使用的.NET版本,保持其他选项不变,然后点击创建。

一个.NET项目被创建。

安装IronBarcode
1. 使用NuGet包管理器
此选项在Visual Studio中可用,并将直接将IronBarcode包安装到您的解决方案中。 转到工具并点击NuGet包管理器,如图所示。

通过在NuGet包管理器中使用搜索框搜索IronBarcode库。 从可用包列表中选择IronBarcode选项。

2. 使用Visual Studio命令行
在Visual Studio菜单中,转到工具> NuGet包管理器 > 包管理器控制台。

在程序包管理器控制台选项卡中输入以下行:Install-Package BarCode。
该包将下载/安装到当前项目并可以使用。

使用IronBarcode生成和显示条形码图像
现在我们的环境已经设置好,我们可以开始编写代码在ASP.NET MVC中动态生成条形码图像。
首先,在模型文件夹下创建一个名为GenerateBarcodeModel.cs的类。
using System.ComponentModel.DataAnnotations;
namespace GenerateBarcodeMVCCore6_Demo.Models
{
public class GenerateBarcodeModel
{
[Display(Name = "Enter Barcode Text")]
public string Barcode { get; set; }
}
}Imports System.ComponentModel.DataAnnotations
Namespace GenerateBarcodeMVCCore6_Demo.Models
Public Class GenerateBarcodeModel
<Display(Name := "Enter Barcode Text")>
Public Property Barcode() As String
End Class
End NamespaceImports System.ComponentModel.DataAnnotations
Namespace GenerateBarcodeMVCCore6_Demo.Models
Public Class GenerateBarcodeModel
<Display(Name := "Enter Barcode Text")>
Public Property Barcode() As String
End Class
End Namespace在wwwroot文件夹下创建一个名为"GeneratedBarcode"的文件夹,用于存储生成的条形码图像。

在"controllers"文件夹中的HomeController.cs类中添加以下操作方法。
using Microsoft.AspNetCore.Mvc;
using IronBarCode;
using System;
using System.Drawing;
using System.IO;
namespace YourNamespace.Controllers
{
public class HomeController : Controller
{
private readonly IWebHostEnvironment _environment;
public HomeController(IWebHostEnvironment environment)
{
_environment = environment;
}
public IActionResult CreateBarcode()
{
return View();
}
// Handling POST operation inside this Action method
[HttpPost]
public IActionResult CreateBarcode(GenerateBarcodeModel generateBarcode)
{
try
{
// Create a barcode using the input text
GeneratedBarcode barcode = BarcodeWriter.CreateBarcode(generateBarcode.Barcode, BarcodeWriterEncoding.Code128);
// Adding annotation text to barcode
barcode.AddBarcodeValueTextBelowBarcode();
// Styling the Barcode
barcode.ResizeTo(400, 120);
barcode.ChangeBarCodeColor(Color.Red);
barcode.SetMargins(10);
// Define path to save the barcode image
string path = Path.Combine(_environment.WebRootPath, "GeneratedBarcode");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
// Save the generated barcode as a PNG file
string filePath = Path.Combine(_environment.WebRootPath, "GeneratedBarcode/barcode.png");
barcode.SaveAsPng(filePath);
// Get the file name and URL for the generated barcode image
string fileName = Path.GetFileName(filePath);
string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}/GeneratedBarcode/{fileName}";
ViewBag.QrCodeUri = imageUrl;
}
catch (Exception)
{
throw;
}
return View();
}
}
}using Microsoft.AspNetCore.Mvc;
using IronBarCode;
using System;
using System.Drawing;
using System.IO;
namespace YourNamespace.Controllers
{
public class HomeController : Controller
{
private readonly IWebHostEnvironment _environment;
public HomeController(IWebHostEnvironment environment)
{
_environment = environment;
}
public IActionResult CreateBarcode()
{
return View();
}
// Handling POST operation inside this Action method
[HttpPost]
public IActionResult CreateBarcode(GenerateBarcodeModel generateBarcode)
{
try
{
// Create a barcode using the input text
GeneratedBarcode barcode = BarcodeWriter.CreateBarcode(generateBarcode.Barcode, BarcodeWriterEncoding.Code128);
// Adding annotation text to barcode
barcode.AddBarcodeValueTextBelowBarcode();
// Styling the Barcode
barcode.ResizeTo(400, 120);
barcode.ChangeBarCodeColor(Color.Red);
barcode.SetMargins(10);
// Define path to save the barcode image
string path = Path.Combine(_environment.WebRootPath, "GeneratedBarcode");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
// Save the generated barcode as a PNG file
string filePath = Path.Combine(_environment.WebRootPath, "GeneratedBarcode/barcode.png");
barcode.SaveAsPng(filePath);
// Get the file name and URL for the generated barcode image
string fileName = Path.GetFileName(filePath);
string imageUrl = $"{this.Request.Scheme}://{this.Request.Host}{this.Request.PathBase}/GeneratedBarcode/{fileName}";
ViewBag.QrCodeUri = imageUrl;
}
catch (Exception)
{
throw;
}
return View();
}
}
}Imports Microsoft.AspNetCore.Mvc
Imports IronBarCode
Imports System
Imports System.Drawing
Imports System.IO
Namespace YourNamespace.Controllers
Public Class HomeController
Inherits Controller
Private ReadOnly _environment As IWebHostEnvironment
Public Sub New(ByVal environment As IWebHostEnvironment)
_environment = environment
End Sub
Public Function CreateBarcode() As IActionResult
Return View()
End Function
' Handling POST operation inside this Action method
<HttpPost>
Public Function CreateBarcode(ByVal generateBarcode As GenerateBarcodeModel) As IActionResult
Try
' Create a barcode using the input text
Dim barcode As GeneratedBarcode = BarcodeWriter.CreateBarcode(generateBarcode.Barcode, BarcodeWriterEncoding.Code128)
' Adding annotation text to barcode
barcode.AddBarcodeValueTextBelowBarcode()
' Styling the Barcode
barcode.ResizeTo(400, 120)
barcode.ChangeBarCodeColor(Color.Red)
barcode.SetMargins(10)
' Define path to save the barcode image
Dim path As String = System.IO.Path.Combine(_environment.WebRootPath, "GeneratedBarcode")
If Not Directory.Exists(path) Then
Directory.CreateDirectory(path)
End If
' Save the generated barcode as a PNG file
Dim filePath As String = System.IO.Path.Combine(_environment.WebRootPath, "GeneratedBarcode/barcode.png")
barcode.SaveAsPng(filePath)
' Get the file name and URL for the generated barcode image
Dim fileName As String = System.IO.Path.GetFileName(filePath)
Dim imageUrl As String = $"{Me.Request.Scheme}://{Me.Request.Host}{Me.Request.PathBase}/GeneratedBarcode/{fileName}"
ViewBag.QrCodeUri = imageUrl
Catch e1 As Exception
Throw
End Try
Return View()
End Function
End Class
End NamespaceImports Microsoft.AspNetCore.Mvc
Imports IronBarCode
Imports System
Imports System.Drawing
Imports System.IO
Namespace YourNamespace.Controllers
Public Class HomeController
Inherits Controller
Private ReadOnly _environment As IWebHostEnvironment
Public Sub New(ByVal environment As IWebHostEnvironment)
_environment = environment
End Sub
Public Function CreateBarcode() As IActionResult
Return View()
End Function
' Handling POST operation inside this Action method
<HttpPost>
Public Function CreateBarcode(ByVal generateBarcode As GenerateBarcodeModel) As IActionResult
Try
' Create a barcode using the input text
Dim barcode As GeneratedBarcode = BarcodeWriter.CreateBarcode(generateBarcode.Barcode, BarcodeWriterEncoding.Code128)
' Adding annotation text to barcode
barcode.AddBarcodeValueTextBelowBarcode()
' Styling the Barcode
barcode.ResizeTo(400, 120)
barcode.ChangeBarCodeColor(Color.Red)
barcode.SetMargins(10)
' Define path to save the barcode image
Dim path As String = System.IO.Path.Combine(_environment.WebRootPath, "GeneratedBarcode")
If Not Directory.Exists(path) Then
Directory.CreateDirectory(path)
End If
' Save the generated barcode as a PNG file
Dim filePath As String = System.IO.Path.Combine(_environment.WebRootPath, "GeneratedBarcode/barcode.png")
barcode.SaveAsPng(filePath)
' Get the file name and URL for the generated barcode image
Dim fileName As String = System.IO.Path.GetFileName(filePath)
Dim imageUrl As String = $"{Me.Request.Scheme}://{Me.Request.Host}{Me.Request.PathBase}/GeneratedBarcode/{fileName}"
ViewBag.QrCodeUri = imageUrl
Catch e1 As Exception
Throw
End Try
Return View()
End Function
End Class
End Namespace上面的代码中的操作方法将处理从我们稍后创建的视图生成的提交请求。 使用IronBarcode,您可以自定义条形码格式、图像元素、条形码字体和HTML图像元素。 可能需要额外的库以进行进一步的自定义,例如IronDrawing用于安装条码字体。 更详细的API文档可以在这里找到。
现在我们可以为条形码生成方法创建一个视图。
在CreateBarcode方法并点击添加视图。

选择Razor视图并点击添加。

选择如下图所示的参数并点击添加。 它将自动为该方法添加一个视图。

您可以修改生成的代码以根据需要更改界面。
@model GenerateBarcodeMVCCore6_Demo.Models.GenerateBarcodeModel
@{
ViewData["Title"] = "CreateBarcode";
}
<h1>CreateBarcode</h1>
<form asp-action="CreateBarcode" method="post">
<div>
<label asp-for="Barcode"></label>
<input asp-for="Barcode" />
<span asp-validation-for="Barcode"></span>
</div>
<button type="submit">Generate Barcode</button>
</form>
@if (ViewBag.QrCodeUri != null)
{
<div>
<img src="@ViewBag.QrCodeUri" alt="Barcode Image" />
</div>
}
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
现在一切已设置好,只需打开CreateBarcode选项。
<li class="nav-item">
<a class="nav-link text-dark" asp-controller="Home" asp-action="CreateBarcode">CreateBarcode</a>
</li>
现在运行应用程序,在文本字段中写入文本并点击生成条形码按钮,它将动态生成并显示条形码图像。
5.1. 输出

6.结论
在ASP.NET MVC 应用程序中动态生成和显示条形码图像可以通过使用IronBarcode库实现,该库是一个强大的.NET条形码库,提供了创建、读取和操作.NET应用程序中的条形码图像的广泛功能。 通过满足安装.NET框架、Visual Studio和IronBarcode库等先决条件,开发人员可以轻松创建ASP.NET MVC项目,并以Code 39、Code 128和QR Code等各种格式生成和显示条形码图像。 IronBarcode库为开发人员提供了生成具有自定义尺寸、颜色和字体的条形码的功能,并可以为条形码图像添加文本和徽标。 除条形码生成外,IronBarcode还包括读取和解码条形码图像的功能。 使用IronBarcode,开发人员可以轻松创建满足业务需求的强大且动态的Web应用程序。 有关此主题的相关教程请访问以下链接。 有关条形码和QR码生成的分步教程,请参阅以下链接。
Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。
相关文章


