uTPro.Feature.SimpleFormBuilder 3.1.1

dotnet add package uTPro.Feature.SimpleFormBuilder --version 3.1.1
                    
NuGet\Install-Package uTPro.Feature.SimpleFormBuilder -Version 3.1.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="uTPro.Feature.SimpleFormBuilder" Version="3.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="uTPro.Feature.SimpleFormBuilder" Version="3.1.1" />
                    
Directory.Packages.props
<PackageReference Include="uTPro.Feature.SimpleFormBuilder" />
                    
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 uTPro.Feature.SimpleFormBuilder --version 3.1.1
                    
#r "nuget: uTPro.Feature.SimpleFormBuilder, 3.1.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 uTPro.Feature.SimpleFormBuilder@3.1.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=uTPro.Feature.SimpleFormBuilder&version=3.1.1
                    
Install as a Cake Addin
#tool nuget:?package=uTPro.Feature.SimpleFormBuilder&version=3.1.1
                    
Install as a Cake Tool

uTPro Simple Form Builder for Umbraco

A lightweight form builder — create and manage dynamic forms directly from the Umbraco backoffice with no code required for everyday use. Render any form on the front-end with a single line, and extend it with custom field types without touching the package.

Works with Umbraco 16, 17 and 18 (multi-targeted net9.0 / net10.0).

Database-agnostic: runs on SQL Server, SQLite and PostgreSQL (v2.0.0+).

NuGet NuGet Downloads Umbraco Marketplace Umbraco 16+ License: MIT

uTPro Form builder


Features

  • Dedicated uTPro Form section with a left Forms tree (like Dictionary)
  • Visual builder: groups → 12-column layout → fields, with live settings
  • Copy / paste groups, columns and fields across forms (browser localStorage)
  • Import / Export form definitions as JSON (layout only — no entries)
  • 19 built-in field types + a custom field type extension point (custom types can declare their own labelled settings)
  • Client-side validation with multi-language (Umbraco Dictionary) messages, backed by server-side validation on submit (field type / pattern / length) plus a mass-assignment guard so only declared form fields are stored
  • Sensitive fields encrypted at rest (ASP.NET Data Protection), masked in the UI
  • Secret field attributes redacted from public output — secrets such as a Cloudflare Turnstile secretKey are stripped from the public render API and the backoffice list/get responses, so only public attributes (e.g. siteKey) are exposed
  • File uploads stored outside wwwroot, served only via an authenticated download endpoint (v2.1.0+); storage location configurable via uTPro:Feature:Form:FileUploadsPath for shared/load-balanced deployments (v2.3.1+). File-upload fields without an explicit accept list fall back to a safe deny-list (executable/script/svg/html extensions rejected) and a default max size
  • Entry storage with search, date-range filters, paging, and export as CSV (data only) or ZIP (per-entry folders with data + uploaded files); CSV and ZIP exports neutralize spreadsheet formula-injection (cells starting with =, +, -, @, tab or CR are quoted as text)
  • Form Picker property editor (+ ready-made data type) to choose a form from content, with server-side publish validation
  • Public REST APIs for submit / render / entries (opt-in per form)
  • Anti-spam & rate limiting — built-in per-IP + per-form rate limit on the public submit endpoint (configurable), plus a pluggable submission pipeline (IFormSubmissionHandler) for captcha verification, custom validation, or your own gatekeepers (v2.3.0+)
  • Backoffice read endpoints (forms / entries / files / export) require forms-management (Settings-section) permission
  • Role-aware UI driven by Umbraco user groups

Quick Start

Install:

dotnet add package uTPro.Feature.SimpleFormBuilder

On first run it creates its tables and seeds a sample Contact Us form. Grant the uTPro Form section to your user group, build a form, then render it anywhere:

@await Component.InvokeAsync("uTProSimpleForm", new { alias = "contact-us" })
Umbraco .NET Target
16 .NET 9 net9.0
17 & 18 .NET 10 net10.0

Configuration

Most settings are managed in the backoffice, but a few live under uTPro:Feature:Form in appsettings.json:

  • FileUploadsPath (string, optional): folder for stored upload files, kept outside wwwroot. A relative path resolves under ContentRoot; leaving it empty falls back to <ContentRoot>/umbraco/Data/uTProSimpleFormUploads. Point it at shared storage for load-balanced / multi-node deployments.
  • MaxExportEntries (int, default 10000): caps how many entries a single ZIP export materialises, bounding memory use. Values <= 0 fall back to the default.
{
  "uTPro": {
    "Feature": {
      "Form": {
        "RateLimit": {
          "Enabled": true,
          "PermitLimit": 5,
          "WindowSeconds": 60
        },
        "FileUploadsPath": "",
        "MaxExportEntries": 10000
      }
    }
  }
}

See Security & Permissions for the full rate-limit options.


Database support

Runs on SQL Server, SQLite and PostgreSQL. All data access uses NPoco strongly-typed queries and provider-agnostic migrations (large JSON columns use SpecialDbTypes.NVARCHARMAX, which maps to nvarchar(max) on SQL Server and text on SQLite / PostgreSQL), so table/column identifiers and types are handled correctly on every database.

For PostgreSQL, install the community provider Our.Umbraco.PostgreSql, enable it in Program.cs with .AddUmbracoPostgreSqlSupport(), and set provider name Npgsql2 in the connection string. The form builder then runs with full functionality — verified end-to-end (unattended install, migration, seed, form submit, and encrypted sensitive fields):

uTPro Simple Form Builder running on PostgreSQL


Documentation

Guide What's inside
Getting Started Install, compatibility, backoffice layout, building a form, copy/paste
Rendering a Form ViewComponent, parameters, template resolution, overriding views, JS hooks
Form Picker Choose a form from content, Allowed-forms setting, publish validation
Field Types Built-in types, custom field types + custom settings, FieldHelper, Star Rating example
Public APIs & Import/Export submit / render / entries endpoints, submission pipeline (IFormSubmissionHandler), JSON import/export
Security & Permissions Roles, sensitive-data encryption (encode/decode), rate limiting, test accounts
Reference Project structure, static assets, database tables, migrations

License & Author

MIT © T4VN. Issues and contributions welcome on the GitHub repository.

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.1.1 122 7/21/2026
3.1.0 125 7/17/2026
3.0.0 142 7/14/2026
2.3.1 161 7/10/2026
2.3.0 207 7/9/2026
2.2.0 128 7/8/2026
2.1.2 133 7/8/2026
2.0.2 133 7/6/2026
2.0.1 99 7/6/2026
2.0.0 128 7/2/2026
1.0.0 100 7/1/2026

v3.1.0: Security & robustness. Submissions are now validated server-side (field type / pattern / length) with a mass-assignment guard so only declared form fields are stored. Secret field attributes (e.g. a Cloudflare Turnstile secretKey) are redacted from the public render API and the backoffice list/get responses — only public attributes like siteKey are exposed. CSV and ZIP entry exports neutralize spreadsheet formula-injection (cells starting with =, +, -, @, tab or CR are quoted as text). File-upload fields without an explicit accept list fall back to a safe deny-list (executable/script/svg/html rejected) plus a default max size. Backoffice read endpoints (forms/entries/files/export) require forms-management permission. New uTPro:Feature:Form:MaxExportEntries option (default 10000) bounds ZIP-export memory. No breaking API changes. v3.0.0: Dependency change so the Umbraco Marketplace correctly lists Umbraco 18 support. The package now references the granular Umbraco.Cms.Api.Management package instead of the Umbraco.Cms bundle metapackage. The bundle exact-pins its child packages to the floor version, which made the Marketplace cap detected compatibility at Umbraco 17 and never award the Umbraco 18 (v18) badge — even though the declared range [17.0.0, 19.0.0) already includes 18. The granular package lets the Marketplace resolve the full range and list Umbraco 16, 17 and 18. No functional, API, database or feature changes: runtime behaviour is identical, and a few using directives the bundle previously supplied as implicit global usings are now declared explicitly. Multi-target net9.0 (Umbraco 16) / net10.0 (Umbraco 17 and 18) and SQL Server / SQLite / PostgreSQL support are unchanged. No breaking changes to the public API. v2.3.1: File-upload storage location is now configurable via uTPro:Feature:Form:FileUploadsPath (absolute, or relative to the content root). This lets load-balanced / multi-app deployments (e.g. a separate backoffice app and website app) point at one shared folder so uploaded form files are reachable from every app; files are still stored OUTSIDE wwwroot and only served through the authenticated backoffice download endpoint. Empty (the default) keeps the previous <ContentRoot>/umbraco/Data/uTProSimpleFormUploads location. No breaking changes. v2.3.0: New form-submission pipeline. Register IFormSubmissionHandler implementations (via DI) to run custom per-submission logic — captcha verification, anti-spam, or custom field validation — after the request is parsed but BEFORE the entry is stored; handlers run ordered by Order and the first to reject short-circuits the submission. Adds built-in per-IP + per-form fixed-window rate limiting for the public submit endpoint, configurable via the uTPro:Feature:Form:RateLimit section (Enabled/PermitLimit/WindowSeconds). New public types: IFormSubmissionHandler, FormSubmissionContext, FormSubmissionResult, FormSubmissionOptions. No breaking changes. v2.2.0: Custom field types can now declare their own settings (SimpleFormFieldAttribute) when registering via AdduTProSimpleFormFieldType. The form builder renders a labelled input for each declared attribute (like the built-in Min/Max on Time Picker) and stores the value in the field's Attributes, readable in the partial via FieldHelper.Attr(key). This lets consuming sites add configurable settings for their own field types without editing the package. No breaking changes. v2.1.2: Rebuild of 2.1.1 from a clean output — the 2.1.1 package shipped a stale compiled assembly that was missing the v2.1.0 file-upload / ZIP-export server code. No source or API changes versus 2.1.1; this release simply ships the correct assembly. v2.1.1: Dependency cleanup — removed the explicit Microsoft.AspNetCore.DataProtection package reference; the Data Protection APIs (used for sensitive-field and file-token encryption) now come from the Microsoft.AspNetCore.App shared framework that Umbraco.Cms already references. No functional or API changes versus 2.1.0. v2.1.0: File upload fields are now fully supported end-to-end. Files travel with the submission in a single multipart request, so nothing is written to disk until the entry validates and is stored (no orphaned uploads); they are saved OUTSIDE wwwroot (under App_Data/umbraco/Data/uTProSimpleFormUploads) and are only retrievable through an authenticated backoffice download endpoint. Per-field "accept" (extension) and "maxSize" (MB) validation is enforced server-side. Uploaded files are cleaned up automatically when an entry or form is deleted, or when a submission is not stored. Sensitive file fields obey the same permission as sensitive text: masked in the UI and blocked from download for users without the Sensitive Data permission. New "Export data + files (ZIP)" action builds a ZIP with one folder per entry (named by id) containing that entry's CSV row and its uploaded files; the two entry exports (CSV / ZIP) are grouped under a single "Export" dropdown. The submit endpoint still accepts JSON for file-less API consumers (backward compatible). v2.0.2: Republish to fix a stale packaged assembly. The 2.0.1 package shipped a compiled-view DLL that still emitted the old "sf" CSS class names in the rendered form markup (while the CSS/JS static assets already used "uTProForm"), causing a class-name mismatch. This release is built clean so the compiled Razor views correctly emit the "uTProForm" prefix. No source/API changes versus 2.0.1. v2.0.1: Fix encode attribute, and renamed front-end CSS class prefix from "sf" to "uTProForm" (e.g. .sf -> .uTProForm, .sf-error -> .uTProForm-error) and JavaScript hooks window.__sfBeforeSubmit/__sfAfterSubmit to window.__uTProFormBeforeSubmit/__uTProFormAfterSubmit for clearer, collision-free naming. BREAKING: sites that target the old .sf* CSS selectors or use the old window.__sf* hooks must update accordingly. v2.0.0: Cross-database support (SQL Server, SQLite and PostgreSQL). Migration now creates JSON columns via SpecialDbTypes.NVARCHARMAX instead of the SQL Server-only NTEXT, and all data access uses NPoco strongly-typed queries so identifiers are quoted per provider. No schema change for existing databases. v1.0.0: Initial release. Form builder for Umbraco 16, 17 and 18 (multi-target net9.0/net10.0) with groups/columns layout, 19 built-in field types + custom field extension point, client-side validation, sensitive-data encryption, import/export, copy/paste, Form Picker property editor, and public submit/render/entries APIs.