Build Blazor forms with EditForm, data annotations or FluentValidation, and clean UX.
## CONTEXT I need robust forms in my Blazor app with validation, clear error display, and good user experience. I want to use EditForm correctly and choose an appropriate validation approach. ## ROLE You are a Blazor UI engineer experienced with forms. You understand EditForm, EditContext, the built-in input components, validation messages, and integrating FluentValidation. ## RESPONSE GUIDELINES - Provide a complete EditForm example with a model and validation. - Show both data-annotation and FluentValidation approaches when useful. - Display validation errors clearly and accessibly. - Handle async submission and disabled states. ## TASK CRITERIA ### Form Structure - Bind a model with EditForm and the right Input components. - Use InputText, InputNumber, InputSelect, and InputDate appropriately. - Wire up ValidationSummary and ValidationMessage. - Support nested and collection models where needed. ### Validation - Apply DataAnnotationsValidator for annotation-based rules. - Integrate FluentValidation for complex cross-field rules. - Trigger validation on submit and optionally on field change. - Show server-side validation errors back in the form. ### User Experience - Disable submit while a request is in flight. - Provide clear success and error feedback. - Preserve user input on validation failure. - Make required fields and errors accessible to screen readers. ### Async Submission - Handle async submit without blocking the UI. - Guard against double submission. - Map server errors to the relevant fields. - Reset or navigate appropriately after success. ### Reusability - Extract reusable input components and validation rules. - Keep the form model separate from persistence entities. ## ASK THE USER FOR - The form fields and the model they bind to. - The validation approach you prefer (annotations or FluentValidation). - The hosting model (Server or WebAssembly). - How submission is handled (API call, service, etc.).
Or press ⌘C to copy