Dignite.Abp.FlexFields.Web 10.7.1

dotnet add package Dignite.Abp.FlexFields.Web --version 10.7.1
                    
NuGet\Install-Package Dignite.Abp.FlexFields.Web -Version 10.7.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Dignite.Abp.FlexFields.Web" Version="10.7.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Dignite.Abp.FlexFields.Web" Version="10.7.1" />
                    
Directory.Packages.props
<PackageReference Include="Dignite.Abp.FlexFields.Web" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Dignite.Abp.FlexFields.Web --version 10.7.1
                    
#r "nuget: Dignite.Abp.FlexFields.Web, 10.7.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Dignite.Abp.FlexFields.Web@10.7.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Dignite.Abp.FlexFields.Web&version=10.7.1
                    
Install as a Cake Addin
#tool nuget:?package=Dignite.Abp.FlexFields.Web&version=10.7.1
                    
Install as a Cake Tool

Dignite.Abp.FlexFields

Part of dignite-projects/abp-modules — see the repository README for the other modules, and CONTRIBUTING.md for the build, versioning, and release process shared across them.

A constraint kernel for adding flexible, per-instance fields (EAV) to any host entity in an ABP Framework solution — modeled on ABP's own Volo.Abp.Users: contracts, generics, and mechanism only, no field or host model of its own. Every downstream (a CMS, a commerce catalog, …) owns its own field-definition entity, host entity, and database table; the kernel never defines "the concrete one."

  • A self-built value bag, not ExtraProperties. IHasFlexFields.FlexFields is FlexFields' own dictionary, isolated from ABP's shared ExtraProperties bag by design (see dev-docs/flexfields-design.md §4).
  • One seam in, one seam out. A downstream implements IFlexFieldProvider<TEntity> to tell the kernel what fields a host entity has; the kernel gives back validation (IFlexFieldValidator<TEntity>), a query pushdown (IFlexFieldQueryExecutor<TEntity>), derived-index maintenance (IFlexFieldIndexManager<TEntity>), and value-bag key migration for renamed or deleted field definitions (IFlexFieldValueMigrator<TEntity>).
  • Provider-agnostic by design. The relational pivot-table shape (FlexFieldIndexValue, EfCoreFlexFieldIndexManagerBase, …) lives only in Dignite.Abp.FlexFields.EntityFrameworkCore; the MongoDB provider has no equivalent type and queries the value bag directly.

.NET 10 · ABP 10.7 · LGPL-3.0-only

Documentation

Read the documentation — getting started with EF Core, the eight built-in field types and their configuration keys, creating a field type, querying by field values, renaming and deleting fields, MongoDB, the Angular and MVC UIs, and the CKEditor field type.

Packages

Package Purpose
Dignite.Abp.FlexFields.Abstractions DDD-free contracts and vocabulary: the value bag, FlexFieldValue, IFieldType + the eight built-in field types (Text/Number/DateTime/Select/Boolean/Tree, plus the composite Matrix/Table), the query vocabulary, and the field-lifecycle Etos.
Dignite.Abp.FlexFields.Domain.Shared Shared constants (FlexFieldConsts).
Dignite.Abp.FlexFields.Domain The Entity contract (IFlexField) and the DDD-aware seams, with the default validator and value migrator.
Dignite.Abp.FlexFields.EntityFrameworkCore Model-builder extensions, the typed pivot-row shape (FlexFieldIndexValue), and base classes for the index manager, query executor, and field repository. Ships no DbContext and no table.
Dignite.Abp.FlexFields.MongoDB Queries and indexes the value bag in place; no counterpart to FlexFieldIndexValue.
Dignite.Abp.FlexFields.Web <flex-field-view> / <flex-field-search> tag helpers for MVC / Razor Pages.
Dignite.Abp.FlexFields.CKEditor / .CKEditor.Web Optional rich-text field type, and its MVC view.
@dignite/ng.flex-fields (npm) Angular config / control / view / search components for every built-in field type.
@dignite/ng.flex-fields-ckeditor (npm) Optional Angular half of the CKEditor field type.

Quick start

dotnet add path/to/MyProject.Domain.csproj package Dignite.Abp.FlexFields.Domain
dotnet add path/to/MyProject.EntityFrameworkCore.csproj package Dignite.Abp.FlexFields.EntityFrameworkCore
public class ProductField : AggregateRoot<Guid>, IFlexField { /* Name, DisplayName, FieldTypeName, Configuration, ... */ }

public class Product : AggregateRoot<Guid>, IHasFlexFields
{
    public virtual FlexFieldDictionary FlexFields { get; set; } = new();
}

public class ProductFlexFieldProvider : IFlexFieldProvider<Product>, ITransientDependency
{
    // Merge this host's field definitions + per-usage Required/Searchable + entity.FlexFields
    // into FlexFieldValue instances - the kernel's only way to learn what fields Product has.
}

The documentation's Getting Started wires the database mapping, the index manager, the query executor and the save path.

Development

dotnet build Dignite.Abp.FlexFields.slnx      # src/ + test/ + demo/
dotnet test  Dignite.Abp.FlexFields.slnx

dotnet run --project demo/Dignite.Abp.FlexFields.Demo -- --migrate-database   # first run only
dotnet run --project demo/Dignite.Abp.FlexFields.Demo                         # https://localhost:44330

cd angular && npm install --legacy-peer-deps && npm run build:lib && npm start   # http://localhost:4200

demo/ wires the kernel to a real Product / ProductField feature with an Angular and an MVC UI and seeded data; it is local-dev only and never packed. --legacy-peer-deps is required: @abp/ng.theme.shared 10.7.0 still depends on @swimlane/ngx-datatable ~22.0.0, whose Angular peer range stops at 20. The design rationale, including what was rejected and why, is in dev-docs/flexfields-design.md.

License

Licensed under LGPL-3.0-only.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on Dignite.Abp.FlexFields.Web:

Package Downloads
Dignite.Abp.FlexFields.CKEditor.Web

Default <flex-field-view> rendering (Dignite.Abp.FlexFields.Web) for the CKEditor bolt-on field type: converts a Markdown-format value to HTML (Markdig, GFM-compatible pipeline) and sanitizes the result (HtmlSanitizer) before rendering - see AbpFlexFieldsCKEditorWebModule for the sanitizer/pipeline setup. No search partial: CKEditorFieldType.IndexValueType is null, so there is nothing to search on.

Dignite.Abp.FlexFields.FileExplorer.Web

Default <flex-field-view> rendering (Dignite.Abp.FlexFields.Web) for the FileExplorer bolt-on field type: file name, size, MIME type and a link, read straight out of the value the Angular picker already denormalized at pick time (id/containerName/blobName/name/mimeType/size/url - see FileExplorerFieldType's own doc comment). Zero IO and zero reference to Dignite.FileExplorer, the same boundary the field type itself keeps - the stored value already carries everything this view needs. No search partial: FileExplorerFieldType.IndexValueType is null, so there is nothing to search on.

Dignite.Site.Public.Web

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
10.7.1 126 10/29/2026
10.7.0 149 10/15/2026
10.0.0-rc.29 78 10/12/2026
10.0.0-rc.28 65 10/12/2026
10.0.0-rc.27 67 10/10/2026
10.0.0-rc.26 60 10/10/2026
10.0.0-rc.25 70 10/10/2026
10.0.0-rc.24 70 10/9/2026
10.0.0-rc.23 66 10/9/2026
10.0.0-rc.22 67 10/9/2026
10.0.0-rc.21 67 10/7/2026
10.0.0-rc.20 72 10/7/2026
10.0.0-rc.19 76 10/4/2026
10.0.0-rc.18 75 10/4/2026
10.0.0-rc.17 96 9/23/2026
10.0.0-rc.16 102 9/6/2026
10.0.0-rc.15 104 9/5/2026
10.0.0-rc.14 92 9/4/2026
10.0.0-rc.13 93 9/3/2026
10.0.0-rc.11 95 8/30/2026
Loading failed