Substantive.Blazor.DynamicForm 9.4.0-build20260421r4

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.
9
Substantive.DevTools.Blazor
Substantive Blazor development tools.
10
Substantive.DevTools.Blazor
Substantive Blazor development tools.
11
Substantive.DevTools.Blazor
Substantive Blazor development tools.
12
Substantive.DevTools.Blazor
Substantive Blazor development tools.
21
Substantive.DevTools.Blazor
Substantive Blazor development tools.
24
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,.
55

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