在ASP.NET项目中如何使用C#生成二维码

 更新时间:2025年08月12日 08:48:10   作者:Eiceblue  
二维码(QR Code)已广泛应用于网址分享,支付链接等场景,本文将以 ASP.NET  为示例,演示如何实现 输入文本/URL,生成二维码,在线显示与下载的完整流程

二维码(QR Code)已广泛应用于网址分享、支付链接、票务验证、身份登录等场景。在 ASP.NET 项目中,我们可以通过 C# 结合 Free Spire.Barcode for .NET 快速生成二维码,并将其直接显示在网页上,或制作下载链接。

本文将以 ASP.NET Core Web App(Razor Page) 为示例,演示如何实现 输入文本/URL → 生成二维码 → 在线显示与下载 的完整流程。

  • 创建输入与显示二维码的页面
  • 在后台生成二维码图片并返回 Base64 编码
  • 将二维码显示到页面并提供下载功能

本文示例使用 Free Spire.Barcode for .NET 生成二维码。你可以通过 NuGet 安装:

dotnet add package FreeSpire.Barcode

创建前端页面(Index.cshtml)

在 Razor Page 中,我们需要一个输入框供用户填写二维码内容,以及一个提交按钮触发后台生成逻辑。生成的二维码将直接以图片的形式显示,并提供下载链接。

优化后的 HTML 代码示例:

@page
@model IndexModel
@{
    ViewData["Title"] = "QR Code Generator";
}

<h2 style="font-family: Arial; color: #2c3e50;">QR Code Generator</h2>

<form method="post" style="margin-bottom:20px; background-color:#f9f9f9; padding:15px; border-radius:5px; width: fit-content;">
    <label for="InputData" style="font-weight:bold;">Enter text or URL:</label><br />
    <input type="text" id="InputData" name="InputData" style="width:300px; padding:5px; margin:5px 0;" required />
    <button type="submit" style="padding:5px 15px; background-color:#3498db; color:white; border:none; border-radius:3px; cursor:pointer;">
        Generate QR Code
    </button>
</form>

@if (!string.IsNullOrEmpty(Model.QrCodeBase64))
{
    <div style="margin-top:20px; border:1px solid #ddd; padding:10px; display:inline-block; border-radius:5px;">
        <img src="data:image/png;base64,@Model.QrCodeBase64" alt="QR Code" style="display:block; margin-bottom:10px;" />
        <a href="data:image/png;base64,@Model.QrCodeBase64" rel="external nofollow"  download="qrcode.png" 
           style="background-color:#2ecc71; color:white; padding:5px 10px; border-radius:3px; text-decoration:none;">
            Download QR Code
        </a>
    </div>
}

前端实现要点:

  • 表单通过 POST 提交输入数据;
  • 二维码显示采用 data:image/png;base64 形式,无需保存到磁盘;
  • 提供下载按钮,直接保存二维码图片到本地。

后端二维码生成逻辑(Index.cshtml.cs)

后台逻辑的核心是利用 Spire.Barcode 提供的 BarcodeSettingsBarCodeGenerator 类生成二维码,并将生成的图片转换为 Base64 字符串返回给前端页面显示。

代码示例:

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,                       // 二维码需要设置 Data2D
            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());
    }
}

关键技术说明:

  • QRCodeDataMode.Byte:支持中文、日文等多字节字符,避免乱码;
  • QRCodeECL.M:中等级纠错,适合大部分场景;
  • BottomText:可自定义底部文字,比如显示原始输入内容。

运行效果

当用户在输入框中填写内容并点击“Generate QR Code”按钮后,页面会立即生成二维码并显示,同时提供“Download QR Code”按钮,方便保存到本地。

总结

通过 ASP.NET Core Razor Page + Spire.Barcode for .NET,我们可以非常方便地实现网页端输入数据并生成二维码、即时显示二维码图片,并直接提供图片下载功能。这种方式无需额外的临时文件存储,生成速度快,适合在登录验证、活动报名、文件分享等场景中使用。

如果你需要更复杂的二维码功能(如带 Logo、颜色定制、批量生成等),可以继续扩展 BarcodeSettings 的参数。

到此这篇关于在ASP.NET项目中如何使用C#生成二维码的文章就介绍到这了,更多相关C#生成二维码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅析WPF中Popup弹出层的使用

    浅析WPF中Popup弹出层的使用

    这篇文章将通过一个简单的小例子,为大家详细介绍一下如何在WPF开发中,通过Popup实现鼠标点击弹出浮动停靠窗口,有需要的小伙伴可以了解下
    2024-01-01
  • C# 调用C++写的dll的实现方法

    C# 调用C++写的dll的实现方法

    C#调用C++的非托管类的dll其实很简单基本就是固定的调用格式,有需要的朋友可以参考一下
    2013-10-10
  • 详解C#如何实现一个事件总线

    详解C#如何实现一个事件总线

    Event Bus(事件总线)是一种用于在应用程序内部或跨应用程序组件之间进行事件通信的机制,它允许不同的组件通过发布和订阅事件来进行解耦和通信,本文给大家介绍了C# 如何实现一个事件总线,需要的朋友可以参考下
    2024-10-10
  • C#登录界面代码详细图文教程

    C#登录界面代码详细图文教程

    我们在使用C#做项目的时候,基本上都需要制作登录界面,下面这篇文章主要给大家介绍了关于C#登录界面代码的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-04-04
  • C#使用表达式树(LambdaExpression)动态更新类的属性值(示例代码)

    C#使用表达式树(LambdaExpression)动态更新类的属性值(示例代码)

    这篇文章主要介绍了C#使用表达式树(LambdaExpression)动态更新类的属性值,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • C#启动进程的几种常用方法

    C#启动进程的几种常用方法

    这篇文章主要介绍了C#启动进程的几种常用方法,实例分析了C#对系统进行的相关操作技巧,需要的朋友可以参考下
    2015-05-05
  • C#中实现Fluent Interface的三种方法

    C#中实现Fluent Interface的三种方法

    这篇文章主要介绍了C#中实现Fluent Interface的三种方法,本文讲解了Fluent Interface的简单实现、使用装饰器模式和扩展方法实现Fluent Interface等3种实现方法,需要的朋友可以参考下
    2015-03-03
  • C#中DateTime的时间加减法操作小结

    C#中DateTime的时间加减法操作小结

    本文主要介绍了C#中DateTime的时间加减法操作小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • C#实现关闭其他程序窗口或进程代码分享

    C#实现关闭其他程序窗口或进程代码分享

    这篇文章主要介绍了C#实现关闭其他程序窗口或进程代码分享,本文给出了两种方法,并分别给出示例代码,需要的朋友可以参考下
    2015-06-06
  • C#模式画刷HatchBrush用法实例

    C#模式画刷HatchBrush用法实例

    这篇文章主要介绍了C#模式画刷HatchBrush用法,实例分析了模式画刷HatchBrush绘图的相关技巧,需要的朋友可以参考下
    2015-06-06

最新评论