Substantive.Blazor.DynamicForm 9.4.0-build20260421r12

Substantive.Blazor.DynamicForm

A small library of Blazor components and helpers for rendering nested object graphs as editable forms using FormCraft and MudBlazor.

Features

  • Build a deterministic form tree from a model instance and render nested sections (root, children) as separate FormCraft forms.
  • Support for grouped layouts: None (flattened), Tabs, Stepper, Sidebar.
  • Automatic attribute-driven configuration via AttributeFormBuilderExtensions.AddFieldsFromAttributesAndDisplayAttribute().
  • DefaultFormConfigurationProvider to create and cache per-type FormCraft configurations.

Quick start

  1. Add a project reference to this package or include the project in your solution.
  2. Ensure FormCraft and MudBlazor are available to the consuming project.
  3. Use the NestedFormCraftComponent in a Razor page or component:
@using Substantive.Blazor.DynamicForm

<NestedFormCraftComponent TModel="MyModel" Model="@model" Layout="GroupLayout.Tabs" ShowSubmitButton="true" OnValidSubmit="HandleSubmit" />

@code {
    private MyModel model = new();

    private Task HandleSubmit(MyModel? m)
    {
        // handle valid submit from any nested section (model contains latest values)
        return Task.CompletedTask;
    }
}

Key component parameters

  • TModel / Model: root model type and instance used to build the form tree.
  • MaxDepth: maximum nested discovery depth (default 3).
  • Layout: GroupLayout.None | GroupLayout.Tabs | GroupLayout.Stepper | GroupLayout.Sidebar.
  • SelectedNodeKey / SelectedNodeKeyChanged: control or observe selected section.
  • ConfigurationProvider: supply a custom provider or use DefaultFormConfigurationProvider to resolve per-type FormCraft configurations.
  • TopLevelGroupTitle / TopLevelGroupDescription: presentation-only overrides for the synthetic root-fields group.
  • ShowSubmitButton / SubmitButtonText / SubmitButtonClass / SubmittingText: presentation options forwarded to nested forms.
  • OnValidSubmit: centralized callback invoked when a nested form submits successfully.

Advanced

  • Use AttributeFormBuilderExtensions.AddFieldsFromAttributesAndDisplayAttribute() together with FormCraft attributes on your models to generate field configurations from attributes and DisplayAttribute values.
  • DefaultFormConfigurationProvider creates and caches FormCraft configurations per runtime type to avoid repeated reflection.

References

Showing the top 20 packages that depend on Substantive.Blazor.DynamicForm.

Packages Downloads
Substantive.DevTools.Blazor
Substantive Blazor development tools.
5
Substantive.DevTools.Blazor
Substantive Blazor development tools.
6
Substantive.DevTools.Blazor
Substantive Blazor development tools.
7
Substantive.DevTools.Blazor
Substantive Blazor development tools.
8
Substantive.DevTools.Blazor
Substantive Blazor development tools.
10
Substantive.Metapackage.Blazor
A metapackage contains all Blazor essential building blocks. It packed standalone Blazor components and extensions that often use such as JSInterop, BrowserInterop, Navigation, Exception Handling, Localization, etc,.
29

Version Downloads Last updated
9.4.0-build20260427R7 2 04/27/2026
9.4.0-build20260427R6 2 04/27/2026
9.4.0-build20260427R5 2 04/27/2026
9.4.0-build20260424R5 3 04/24/2026
9.4.0-build20260424R4 3 04/24/2026
9.4.0-build20260424R3 3 04/24/2026
9.4.0-build20260424R2 3 04/24/2026
9.4.0-build20260424R1 3 04/24/2026
9.4.0-build20260422R1 4 04/22/2026
9.4.0-build20260421R9 5 04/21/2026
9.4.0-build20260421R8 3 04/21/2026
9.4.0-build20260421R6 3 04/21/2026
9.4.0-build20260421R5 3 04/21/2026
9.4.0-build20260421R4 3 04/21/2026
9.4.0-build20260421R3 3 04/21/2026
9.4.0-build20260421R16 2 04/21/2026
9.4.0-build20260421R15 3 04/21/2026
9.4.0-build20260421R14 2 04/21/2026
9.4.0-build20260421R12 2 04/21/2026
9.4.0-build20260421R11 3 04/21/2026
9.4.0-build20260421R10 2 04/21/2026
9.4.0-build20260420R3 3 04/20/2026
9.4.0-build20260420R2 3 04/20/2026
9.4.0-build20260414R2 6 04/14/2026
9.4.0-build20260414R1 5 04/14/2026
9.4.0-build20260410R1 5 04/10/2026
9.4.0-build20260408R1 4 04/08/2026
9.4.0-build20260407R1 5 04/07/2026
9.4.0-build20260403R7 5 04/03/2026
9.4.0-build20260403R6 3 04/03/2026
9.4.0-build20260403R5 3 04/03/2026
9.4.0-build20260401R5 6 04/01/2026
9.4.0-build20260401R4 4 04/01/2026
9.4.0-build20260401R3 4 04/01/2026
9.4.0-build20260401R2 4 04/01/2026
9.4.0-build20260401R1 4 04/01/2026
9.4.0-build20260331R7 4 03/31/2026
9.4.0-build20260331R6 4 03/31/2026
9.4.0-build20260331R5 4 03/31/2026
9.4.0-build20260331R4 4 03/31/2026
9.4.0-build20260331R3 3 03/31/2026
9.4.0-build20260331R2 4 03/31/2026
9.4.0-build20260331R1 4 03/31/2026
9.4.0-build20260330R4 5 03/30/2026
9.4.0-build20260330R3 5 03/30/2026
9.4.0-build20260329R1 4 03/29/2026
9.4.0-build20260318R3 8 03/18/2026
9.4.0-build20260317R2 4 03/17/2026
9.4.0-build20260317R1 5 03/17/2026
9.4.0-build20260217R3 7 02/17/2026
9.4.0-build20260207R3 8 02/07/2026
9.4.0-build20260207R2 4 02/07/2026
9.4.0-build20260206R6 5 02/06/2026
9.4.0-build20260206R5 4 02/06/2026
9.4.0-build20260206R4 4 02/06/2026
9.4.0-build20260206R3 4 02/06/2026
9.4.0-build20260206R2 4 02/06/2026
9.4.0-build20260206R1 6 02/06/2026
9.4.0-build20260205R1 6 02/05/2026
9.4.0-build20260202R1 7 02/02/2026
9.4.0-build20251226R1 29 12/26/2025
9.3.3-build20251226R1 4 12/26/2025