A lightweight, flexible form generator for Blazor applications that creates dynamic forms from annotated C# classes.
- Creates forms automatically from C# classes
- Built-in validation through data annotations
- Customizable form rendering and layout
- Type-safe form handling
dotnet add package BlazorDynamicForm - Add Service in Program.cs
builder.Services.AddBlazorDynamicForm();- Create a Model with Annotations
public class ContactForm
{
    [Required, Display(Name = "Name")]
    public string Name { get; set; }
    
    [EmailAddress]
    public string Email { get; set; }
    
    [Phone, Display(Name = "Phone Number")]
    public string PhoneNumber { get; set; }
    
    [TextArea]
    public string Message { get; set; }
}- Use the DynamicForm Component
@using BlazorDynamicForm.Components
@using TypeAnnotationParser
<DynamicForm Scheme="@_formScheme" Data="_formData" OnValidSubmit="@HandleSubmit">
    <SubmitTemplate>
        <button type="submit" class="btn btn-primary">Submit</button>
    </SubmitTemplate>
</DynamicForm>
@code {
    private SchemeModel _formScheme;
    private IDictionary<string, object> _formData = new Dictionary<string, object>();
    
    protected override void OnInitialized()
    {
        var parser = new TypeAnnotationParser();
        _formScheme = parser.Parse<ContactForm>();
    }
    
    private void HandleSubmit(IDictionary<string, object> data)
    {
        // Handle form data
    }
}BlazorDynamicForm provides additional attributes for enhanced form customization:
- [TextArea]- Creates a multi-line text input
- [Placeholder("Enter text...")]- Adds placeholder text
- [Grid(6)]- Controls the layout grid width
- [Name("Custom Field Name")]- Sets a custom field name
- [MultipleSelect("Option1", "Option2", "Option3")]- Creates a dropdown with options
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
