MSDN Documentation

Web Development with Blazor

Introduction to Blazor

Blazor is a free, open-source web framework that enables developers to create interactive client-side web UIs with .NET and C#. Blazor apps can run in the browser using WebAssembly or on the server, rendering HTML and handling events.

Key Features:

Components

Blazor applications are built using components. Components are self-contained pieces of UI and logic. They are typically defined as Razor files (.razor) which contain HTML markup and C# code.

Example Component:


@page "/counter"

Counter

Current count: @currentCount

@code { private int currentCount = 0; private void IncrementCount() { currentCount++; } }

Routing

Blazor supports a powerful routing system that allows you to define which components should be rendered for specific URL paths. This is achieved using the @page directive within components.

Setting a Route:

To make a component navigable, add the @page directive at the top of the component file:


@page "/about"

<h2>About Us</h2>
<p>Information about our company.</p>
            

Data Binding

Blazor simplifies data binding, allowing you to synchronize data between your C# code and HTML elements. This can be done in a one-way or two-way fashion.

Two-Way Data Binding:

Use the @bind attribute to create two-way data binding:


<input type="text" @bind="UserName" />
<p>Hello, @UserName!</p>

@code {
    public string UserName { get; set; } = "Guest";
}
            

Event Handling

Handling UI events like button clicks or input changes is straightforward in Blazor. You can bind C# methods to HTML events using the @onclick, @onchange, etc., attributes.

Button Click Example:


<button @onclick="HandleClick">Submit</button>

@code {
    private void HandleClick()
    {
        // Logic to execute when the button is clicked
        Console.WriteLine("Button clicked!");
    }
}
            

Component Lifecycle

Blazor components have a well-defined lifecycle. Understanding these methods allows you to perform actions at specific stages of a component's existence, such as initialization or when parameters change.

Common Lifecycle Methods:

Forms and Validation

Blazor provides built-in support for creating and validating forms. You can use the EditForm component and validation attributes to manage form state and display validation messages.

JavaScript Interop

While Blazor aims to reduce JavaScript dependency, you can still interact with browser APIs or existing JavaScript code using JavaScript Interop. This allows your C# code to call JavaScript functions and vice-versa.

State Management

For managing application-wide state, Blazor offers various patterns and services. This can include using dependency injection for shared services or implementing dedicated state management solutions.

Deployment

Blazor applications can be deployed in several ways: as a static web app, hosted in an ASP.NET Core application (server-side rendering), or as a progressive web app (PWA).