blazor
  1. blazor-route-parameters-6blazorforms-and-validation-handling-forms

Blazor Forms and Validation

Handling Forms

Forms are common components in any web application. In Blazor, you can easily create and handle forms using a set of built-in components and features.

Syntax

To create a form in Blazor, you can use the EditForm component with the Model parameter to bind the form to a data model.

<EditForm Model="@myDataModel" OnValidSubmit="@HandleValidSubmit">
  <DataAnnotationsValidator />
  <ValidationSummary />

  <div class="form-group">
    <label for="firstName">First Name:</label>
    <InputText id="firstName" @bind-Value="@myDataModel.FirstName" class="form-control" />
    <ValidationMessage For="@(() => myDataModel.FirstName)" />
  </div>

  <div class="form-group">
    <label for="lastName">Last Name:</label>
    <InputText id="lastName" @bind-Value="@myDataModel.LastName" class="form-control" />
    <ValidationMessage For="@(() => myDataModel.LastName)" />
  </div>

  <button type="submit" class="btn btn-primary">Submit</button>
</EditForm>

In the above example, we are creating a form with an EditForm component and binding it to the myDataModel object. We've also added some form elements (input fields and a submit button) within the EditForm component.

Example

Let's say we want to create a simple registration form that asks for the user's name and email address. Here is an example of what the form might look like:

<EditForm Model="@registrationModel" OnValidSubmit="@HandleValidSubmit">
  <DataAnnotationsValidator />
  <ValidationSummary />

  <div class="form-group">
    <label for="name">Name:</label>
    <InputText id="name" @bind-Value="@registrationModel.Name" class="form-control" />
    <ValidationMessage For="@(() => registrationModel.Name)" />
  </div>

  <div class="form-group">
    <label for="email">Email:</label>
    <InputText id="email" @bind-Value="@registrationModel.Email" class="form-control" />
    <ValidationMessage For="@(() => registrationModel.Email)" />
  </div>

  <button type="submit" class="btn btn-primary">Register</button>
</EditForm>

In the above example, we have a simple registration form with two input fields (Name and Email) and a submit button. We've also added a DataAnnotationsValidator component and a ValidationMessage component for each input field.

Output

When the form is submitted, the OnValidSubmit method (defined in the @functions block) will be called. In this method, you can perform any necessary actions (such as saving the data to a database) and redirect the user to another page, if needed.

@code {
  private RegistrationModel registrationModel = new RegistrationModel();

  private void HandleValidSubmit()
  {
    // perform necessary actions (e.g. save data to database)
    // redirect user to another page, if needed
  }
}

Explanation

Let's break down the code in the example:

  • We are creating an EditForm component and binding it to the registrationModel object.
  • Within the EditForm component, we are adding two input fields (Name and Email) and a submit button.
  • We are also adding a DataAnnotationsValidator component and a ValidationMessage component for each input field.
  • The OnValidSubmit method is called when the form is submitted and the data passes validation.

Use

Forms are used in many different scenarios within web applications. Some common use cases include:

  • User registration forms
  • Contact forms
  • Search forms
  • Feedback forms
  • Product order forms

Important Points

When creating forms in Blazor, there are a few important points to keep in mind:

  • Always use the DataAnnotationsValidator component and a ValidationMessage component for each form field. This will ensure that user input is validated before it is submitted to the server.
  • Use the OnValidSubmit event to perform necessary actions (such as saving data to a database) and redirect the user to another page, if needed.
  • Make sure to bind the form to a data model using the Model parameter of the EditForm component. This makes it easier to handle user input and perform validation.

Summary

Forms are an important part of any web application. In Blazor, you can easily create and handle forms using a set of built-in components and features. By using the DataAnnotationsValidator component and a ValidationMessage component for each form field, you can ensure that user input is validated before it is submitted to the server. Use the OnValidSubmit event to perform necessary actions and redirect the user to another page, if needed.

Published on: