在 ASP.NET MVC 中生成和顯示條碼圖像

條形碼以機器可讀的形式直觀地表示數據。通常,它包含有關產品或公司的數據或信息,以數字和/或平行線圖案的形式編碼。在ASP.NET MVC中,我們可以生成各種類型的條碼,如Data Matrix、Aztec、Code 128等。在本文中,我們將學習如何在ASP.NET MVC應用程序中生成和顯示條碼圖像。按照上述步驟後,我們將擁有自己的 ASP.NET MVC 條碼生成器。讓我們開始吧。

文章應涵蓋以下主題:

ASP.NET MVC 條形碼生成器的功能

我們的 ASP.NET 條形碼生成器將具有以下功能。

  1. 生成以下類型的條形碼符號:
    • Code128
    • 代碼11
    • 代碼39
    • 二維碼
    • 數據矩陣
    • EAN13
    • EAN8
    • ITF14
    • PDF417
  2. 將生成的條碼圖片保存為以下格式:
    • PNG
    • JPEG格式
    • 骨形態發生蛋白
    • 電磁場
    • SVG
  3. 預覽生成的條形碼圖像。
  4. 將生成的條形碼圖像下載到本地磁盤。

用於在 ASP.NET MVC 中生成和顯示條碼圖像的 .NET API

為了生成條碼圖像並在 ASP.NET MVC 應用程序中顯示它們,我們將使用 Aspose.BarCode for .NET API。它允許我們生成和識別範圍廣泛的 1D 和 2D 條形碼類型。請 下載 API 的 DLL 或使用 NuGet 安裝它。

PM> Install-Package Aspose.BarCode

在 ASP.NET MVC 中生成和顯示條碼圖像的步驟

我們可以按照以下步驟在 ASP.NET MVC 應用程序中生成和顯示條碼圖像:

  • 首先,創建一個新項目並選擇 ASP.NET Web Application (.NET Framework) 項目模板。
  • 接下來,在創建新的 ASP.NET Web 應用程序對話框中,選擇 MVC,然後選擇創建。
選擇MVC

選擇MVC

為 .NET 安裝 Aspose.BarCode

為 .NET 安裝 Aspose.BarCode

  • 接下來,創建一個新文件夾“Images”來保存生成的條碼圖像。
創建圖像文件夾。

創建圖像文件夾。

  • 現在,在“Models”文件夾中創建一個名為“Barcode”的模型來存儲條碼信息。
// 條碼基本信息
public class Barcode
{
    public string Text { get; set; }

    public BarcodeType BarcodeType { get; set; }

    public BarCodeImageFormat ImageType { get; set; }
}
  • 此外,添加枚舉以列出支持的條碼符號體系。它可以添加到“Models”文件夾下的一個單獨的類中,也可以添加到Barcode.cs類文件中。
// 條碼符號
public enum BarcodeType
{
    Code128,
    Code11,
    Code32,
    QR,
    Datamatrix,
    EAN13,
    EAN8,
    ITF14,
    PDF417
}
  • 同樣,添加枚舉以列出支持的圖像格式。
// 圖片格式
public enum ImageType
{
    Png,
    Jpeg,
    Bmp,
    Emf,
    Svg
}
  • 接下來,打開 Views/Home/index.cshtml 並將其內容替換為以下腳本。
@using BarcodeGeneratorMVC.Models

@model Barcode

@{
    ViewBag.Title = "Home Page";
}

<div class="row">
    <div class="col-lg-6">
        <h2>Generate Barcode</h2>
        @using (Html.BeginForm())
        {
            <div class="form-group">
                @Html.Label("Select Barcode Type:", new { @class = "col-md-12 control-label" })
                <div class="col-md-12">
                    @Html.DropDownListFor(model => model.BarcodeType,
         new SelectList(Enum.GetValues(typeof(BarcodeType))),
         "Select Barcode", new { @class = "form-control" })
                </div>
            </div>
            <div class="form-group">
                @Html.Label("Enter Your Text:", new { @class = "col-md-12 control-label" })
                <div class="col-md-12">
                    @Html.EditorFor(m => m.Text, new { @class = "form-control" })
                </div>
            </div>
            <div class="form-group">
                @Html.Label("Select Image Format:", new { @class = "col-md-12 control-label" })
                <div class="col-md-12">
                    @Html.RadioButtonFor(model => model.ImageType, ImageType.Png) @Html.Label("PNG")
                    @Html.RadioButtonFor(model => model.ImageType, ImageType.Jpeg) @Html.Label("JPG")
                    @Html.RadioButtonFor(model => model.ImageType, ImageType.Bmp) @Html.Label("BMP")
                    @Html.RadioButtonFor(model => model.ImageType, ImageType.Emf) @Html.Label("EMF")
                    @Html.RadioButtonFor(model => model.ImageType, ImageType.Svg) @Html.Label("SVG")
                </div>
            </div>
            <div class="form-group">
                <div class="col-md-12">
                    <input type="submit" class="btn btn-default" value="Generate Barcode" />
                </div>
            </div>
        }
    </div>
    <div class="col-lg-6">
        <h2>View Barcode Image</h2>
        @{
            if (!string.IsNullOrEmpty(@ViewBag.ImagePath))
            {
                <div class="form-group">
                    <div class="col-md-12">
                        <img src=@Url.Content(@ViewBag.ImagePath) alt="Barcode Image" />
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-12">
                        @Html.ActionLink("Download Image", "Download", "Home", new
                           {                                                     // routeValues
                               ImagePath = @ViewBag.ImagePath,
                               ImageName = @ViewBag.ImageName
                           },
                           null)
                    </div>
                </div>
            }
        }
    </div>
    <hr />
</div>
  • 然後,打開“HomeController”類並添加一個新的操作結果來處理髮布請求。
[HttpPost]
public ActionResult Index(Barcode barcode)
{
    string codeText = barcode.Text;
    string imageName = barcode.Text + "." + barcode.ImageType;
    string imagePath = "/Images/" + imageName;
    string imageServerPath = Server.MapPath("~" + imagePath);

    var encodeType = EncodeTypes.Code128;

    switch (barcode.BarcodeType)
    {
        case BarcodeType.Code128:
            encodeType = EncodeTypes.Code128;
            break;

        case BarcodeType.ITF14:
            encodeType = EncodeTypes.ITF14;
            break;

        case BarcodeType.EAN13:
            encodeType = EncodeTypes.EAN13;
            break;

        case BarcodeType.Datamatrix:
            encodeType = EncodeTypes.DataMatrix;
            break;

        case BarcodeType.Code32:
            encodeType = EncodeTypes.Code32;
            break;

        case BarcodeType.Code11:
            encodeType = EncodeTypes.Code11;
            break;

        case BarcodeType.PDF417:
            encodeType = EncodeTypes.Pdf417;
            break;

        case BarcodeType.EAN8:
            encodeType = EncodeTypes.EAN8;
            break;

        case BarcodeType.QR:
            encodeType = EncodeTypes.QR;
            break;
    }

    using (Stream str = new FileStream(imageServerPath, FileMode.Create, FileAccess.Write))
    {
        BarcodeGenerator gen = new BarcodeGenerator(encodeType, codeText);
        gen.Save(str, barcode.ImageType);
    }

    ViewBag.ImagePath = imagePath;
    ViewBag.ImageName = imageName;

    return View();
}
  • 之後,在“HomeController”中添加一個新的action result來處理圖片下載請求。
public ActionResult Download(string ImagePath, string ImageName)
{
    string contentType = "application/img";
    return File(ImagePath, contentType, Path.GetFileName(ImageName));
}
  • 最後,運行應用程序。

演示 ASP.NET MVC 條碼生成器

以下是我們剛剛創建的 ASP.NET MVC 條碼生成器應用程序的演示。

演示 ASP.NET MVC 條碼生成器

演示 ASP.NET MVC 條碼生成器

下載源代碼

您可以從 GitHub 下載 ASP.NET MVC 條碼生成器應用程序的完整源代碼。

獲得免費許可證

您可以 獲得免費的臨時許可證 來試用該庫,而沒有評估限制。

結論

在本文中,我們學習瞭如何在 ASP.NET MVC 應用程序中生成和顯示條形碼圖像。我們還了解瞭如何以編程方式下載生成的條形碼圖像。此外,您可以使用文檔了解更多關於 Aspose.BarCode for .NET API 的信息。如有任何歧義,請隨時在論壇上與我們聯繫。

也可以看看