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起Windows特定的System.Drawing.Common和.NET Graphics API的情况下,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。
创建一个新的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; }
}
}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 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 Namespace上面的代码中的操作方法将处理从我们稍后创建的视图生成的提交请求。 使用IronBarcode,您可以自定义条形码格式、图像元素、条形码字体和HTML图像元素。 可能需要额外的库以进行更多自定义,例如IronDrawing用于安装条形码字体。 更详细的API文档可以在这里找到。
现在我们可以为条形码生成方法创建一个视图。
在HomeController.cs文件中,右键点击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");}
}现在一切都已设置完成,只需打开_Layout.cshtml文件,并添加代码以在navbar中添加CreateBarcode选项。
<li class="nav-item">
<a class="nav-link text-dark" asp-controller="Home" asp-action="CreateBarcode">CreateBarcode</a>
</li><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码生成的分步教程,请参阅以下链接。
常见问题解答
如何在ASP.NET MVC中动态生成条形码图像?
您可以使用IronBarcode库通过将其API集成到您的项目中在ASP.NET MVC中动态生成条形码图像。这个C#库支持多种条形码格式,并允许在尺寸、颜色和文本方面进行自定义。
使用IronBarcode在ASP.NET MVC应用程序中的好处是什么?
IronBarcode无需依赖于Windows特有的.NET Graphics APIs即可提供跨平台功能。它支持多种条形码格式,提供自定义选项,并可从图像、PDF和实时摄像头源读取和解码条形码。
如何将IronBarcode集成到ASP.NET MVC项目中?
要将IronBarcode集成到ASP.NET MVC项目中,您需要在Visual Studio中通过NuGet包管理器安装该库,设置用于条形码数据的模型,创建控制器处理条形码生成,并设计视图供用户交互和条形码显示。
在ASP.NET MVC中使用IronBarcode生成的条形码格式支持哪些?
IronBarcode支持在ASP.NET MVC中生成范围广泛的条形码格式,包括Code 39、Code 128、QR Code、Data Matrix和PDF417。
我可以自定义使用IronBarcode生成的条形码图像的外观吗?
是的,IronBarcode允许对条形码图像进行自定义,包括调整条形码格式、颜色、尺寸、字体,并在条形码中添加文本或徽标。
在ASP.NET MVC中生成条形码时如何排除问题?
如果在ASP.NET MVC中遇到生成条形码的困难,请确保IronBarcode库正确安装,所有依赖项都满足,并且条形码数据模型和控制器设置已正确实现。参考IronBarcode的文档以获得更多指导。
是否可以通过IronBarcode在ASP.NET MVC应用程序中解码条形码?
是的,IronBarcode包括从图像、PDF文档和实时摄像头源解码条形码的功能,即使它们部分损坏。
设置包含IronBarcode的ASP.NET MVC项目有哪些先决条件?
您需要安装.NET Framework或.NET Core、Visual Studio和IronBarcode库,这些库可以从Iron Software网站下载或通过NuGet包管理器安装。







