二维码如今已成为现代 Web 应用中的标配功能,广泛应用于用户身份验证、无接触式交易、链接分享、名片信息传递等场景。对于 ASP.NET 开发者来说,使用 C# 实现二维码生成功能,已是众多实际项目中的常见需求。
本文将演示如何使用 Spire.Barcode for .NET 在 ASP.NET 应用中用 C# 生成二维码。我们将以一个 Razor Pages 项目为例,完整展示后端逻辑与前端页面,其他 ASP.NET 框架如 MVC、Web API、Web Forms 也可轻松使用相同方法。
文章目录
1. 环境准备与依赖项
前提条件:
确保你的开发环境已安装以下内容:
- Visual Studio 2019 或更高版本
- .NET 6 或更新版本
- ASP.NET Core Web App(Razor Pages 模板)
- NuGet 包:Spire.Barcode for .NET
安装 Spire.Barcode
通过 NuGet 包管理器控制台安装库:
Install-Package Spire.Barcode
Spire.Barcode 是一款完全独立的 .NET 条码组件,可在内存中生成二维码,无需调用外部 API。对于轻量项目,也可使用免费版 Free Spire.Barcode for .NET。
2. 在 ASP.NET 中生成二维码(C# 示例)
本节将展示如何在 ASP.NET Core Razor Pages 项目中实现二维码生成功能,示例包括后端 C# 处理逻辑以及简单的 Razor 页面用户界面。
步骤 1:在 PageModel 中添加二维码生成逻辑
二维码的生成逻辑写在 Index.cshtml.cs 文件中,处理用户输入后使用 Spire.Barcode 生成二维码,并将其以 Base64 字符串形式返回,便于嵌入到 HTML 页面中展示。
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Spire.Barcode;
public class IndexModel : PageModel
{
[BindProperty]
public string InputData { get; set; }
public string QrCodeBase64 { get; set; }
public void OnPost()
{
if (!string.IsNullOrWhiteSpace(InputData))
{
QrCodeBase64 = GenerateQrCodeBase64(InputData);
}
}
private string GenerateQrCodeBase64(string input)
{
var settings = new BarcodeSettings
{
Type = BarCodeType.QRCode, // 二维码类型
Data = input, // 主编码数据
Data2D = input, // 二维码所需数据,通常与Data相同
QRCodeDataMode = QRCodeDataMode.Byte, // 字节模式(支持多语言内容)
QRCodeECL = QRCodeECL.M, // 中等级别的纠错能力(15%)
X = 3, // 模块大小(影响二维码图片尺寸)
ShowText = false, // 不显示默认条码文本
ShowBottomText = true, // 显示自定义底部文本
BottomText = input // 二维码下方显示的文本
};
var generator = new BarCodeGenerator(settings);
using var ms = new MemoryStream();
var qrImage = generator.GenerateImage();
qrImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
return Convert.ToBase64String(ms.ToArray());
}
}
关键点说明:
BarcodeSettings
:配置二维码的编码数据、容错级别、大小与底部文字显示等属性。BarCodeGenerator
:通过GenerateImage()
方法生成二维码图像对象。- Base64 编码:将图像转为 Base64 字符串,方便直接嵌入网页显示。
该方式完全基于内存操作,无需文件读写,适用于云部署或无状态服务场景。
步骤 2:创建 Razor 页面用于输入与显示二维码
前端页面(Index.cshtml)包含一个表单输入框和用于显示二维码及下载链接的区域:
@page
@model IndexModel
@{
ViewData["Title"] = "二维码生成器";
}
<h2>二维码生成器</h2>
<form method="post">
<label for="InputData">请输入文本或网址:</label>
<input type="text" id="InputData" name="InputData" style="width:300px;" required />
<button type="submit">生成二维码</button>
</form>
@if (!string.IsNullOrEmpty(Model.QrCodeBase64))
{
<div style="margin-top:20px">
<img src="data:image/png;base64,@Model.QrCodeBase64" alt="QR Code" />
<br />
<a href="data:image/png;base64,@Model.QrCodeBase64" download="qrcode.png"
style="
display: inline-block;
margin-top: 10px;
padding: 8px 16px;
background-color: #0078D7;
color: white;
text-decoration: none;
border-radius: 4px;
font-weight: 600;
cursor: pointer;
">
下载二维码
</a>
</div>
}
二维码图像使用 data:
URI 方式直接嵌入网页,无需保存成文件,加载速度快,下载操作简便。
生成结果示意图如下:
如需扫描二维码功能,请参考:如何用 C# 识别二维码
3. 自定义二维码外观样式
通过 BarcodeSettings
可自定义二维码的多项属性,包括尺寸、颜色、容错级别、是否显示文字等:
属性 | 功能说明 | 示例 |
---|---|---|
QRCodeDataMode | 字符编码方式 | QRCodeDataMode.Byte |
QRCodeECL | 容错级别(L/M/Q/H) | QRCodeECL.H |
X | 模块大小(决定图像分辨率) | settings.X = 6 |
ImageWidth/Height | 图像宽高尺寸设置 | settings.ImageWidth = 300 |
ForeColor | 设置二维码颜色 | settings.ForeColor = Color.Blue |
ShowText | 是否显示默认条码文本 | settings.ShowText = false |
BottomText | 自定义底部说明文字 | settings.BottomText = "扫码访问" |
ShowBottomText | 是否显示底部文字 | settings.ShowBottomText = true |
QRCodeLogoImage | 设置嵌入 logo 图像(居中) | settings.QRCodeLogoImage = Image.FromFile("logo.png") |
更多属性请参阅 BarcodeSettings API 文档。
4. 应用于 MVC、Web API 和 Web Forms
二维码生成逻辑可轻松迁移到 ASP.NET 的其他类型项目中,如 MVC、Web API 和 Web Forms。
在 MVC 控制器中生成二维码
在 MVC 项目中,可在控制器添加一个 Generate
方法返回二维码图像:
public class QrController : Controller
{
public ActionResult Generate(string data)
{
var settings = new BarcodeSettings
{
Type = BarCodeType.QRCode,
Data = data,
QRCodeDataMode = QRCodeDataMode.Byte,
QRCodeECL = QRCodeECL.M,
X = 5
};
var generator = new BarCodeGenerator(settings);
using var ms = new MemoryStream();
generator.GenerateImage().Save(ms, System.Drawing.Imaging.ImageFormat.Png);
return File(ms.ToArray(), "image/png");
}
}
该方法直接返回 PNG 图像,适合在页面中嵌入或下载使用。
在 Web API 中暴露二维码生成接口
对于 Web API,可定义一个 GET 接口用于生成二维码图像流:
[ApiController]
[Route("api/[controller]")]
public class QrApiController : ControllerBase
{
[HttpGet("generate")]
public IActionResult GetQr(string data)
{
var settings = new BarcodeSettings
{
Type = BarCodeType.QRCode,
Data = data
};
var generator = new BarCodeGenerator(settings);
using var ms = new MemoryStream();
generator.GenerateImage().Save(ms, System.Drawing.Imaging.ImageFormat.Png);
return File(ms.ToArray(), "image/png");
}
}
适用于 React、Vue、Angular 等前端框架通过 API 请求获取二维码图像。
在 Web Forms 中生成二维码
Web Forms 项目可在后台代码中处理二维码生成,并使用 Base64 形式展示:
protected void btnGenerate_Click(object sender, EventArgs e)
{
var settings = new BarcodeSettings
{
Type = BarCodeType.QRCode,
Data = txtInput.Text
};
var generator = new BarCodeGenerator(settings);
using var ms = new MemoryStream();
generator.GenerateImage().Save(ms, System.Drawing.Imaging.ImageFormat.Png);
imgQR.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(ms.ToArray());
}
将图像绑定到 <asp:Image>
控件中,即可在前端显示二维码。
5. 总结
借助 Spire.Barcode for .NET,你可以使用 C# 在 ASP.NET 的多种框架中快速实现二维码生成,包括 Razor Pages、MVC、Web API 与 Web Forms。该方案无需依赖外部服务,支持本地离线运行,图像输出灵活,适合用于身份验证、票务系统、名片分享等场景。
返回 Base64 字符串使得部署更简单,也无需进行文件存储管理。是一种稳定、实用且易于维护的二维码解决方案。
如需解锁Spire.Barcode for .NET 的完整功能,请联系我们申请免费License。
常见问题
问:Spire.Barcode 是否支持中文、阿拉伯语等多语言字符?
答:支持。请使用 QRCodeDataMode.Byte
模式来确保字符兼容性。
问:二维码颜色、大小是否可以调整?
答:可以。可通过 X
、ForeColor
、ImageWidth
等属性灵活控制。
问:二维码生成是否完全离线? 答:是的。无需调用任何第三方 API,可在本地独立运行。
问:能否将二维码生成接口公开为 API? 答:完全可以。通过 ASP.NET Web API 可对前端或其他服务提供图像访问能力。