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 } }
-
Example
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.