Build

Build web apps using the MVVM pattern
and great Visual Studio integration.

Explore

Modernize

Modernize ASP.NET Web Forms apps
and move them to .NET 5.

Explore

Ready-made controls

Save your time with GridView, FileUpload and other components shipped with the framework.

Lightweight

DotVVM needs less than 100 kB of JavaScript code. It's smaller than other ASP.NET-based frameworks.

Skip building APIs

Don't spend the time building an API. Just load data from the database and use data-binding to display them.

Fits in .NET ecosystem

DotVVM offers a free Visual Studio extension giving you all the comfort you are used to.

Easy to learn

Use DotVVM components in markup

DotVVM comes with ready-made components you can use in your HTML files.

Write ViewModels in C#

The state and user interactions are handled in viewmodels - C# classes.

Use CSS to style controls

The controls render simple HTML which can be styled easily.

<div class="form-group">
    <dot:TextBox Text="{value: Number}" />

    <dot:Button Text="Increment"
                Click="{command: Increment()}" />
</div>
public class IncViewModel 
{
  public int Number { get; set; }

  public void Increment() 
  {
    Number++;
  }
}
<dot:Button Text="Increment"
            Click="{command: Increment()}"
            class="btn btn-default" />
<dot:ComboBox DataSource="{value: Category}" 
    SelectedValue="{value: SelectedCategory}" />

<dot:TextBox Text="{value: OtherCategory}" 
    Enabled="{value: Category == "Other"}" />
[Required]
[EmailAddress]
public string CustomerEmail { get; set; }
<div Validator.InvalidCssClass="has-error" 
     Validator.Value="{value: FirstName}">
  <dot:TextBox Text="{value: FirstName}" />
</div>

<dot:ValidationSummary 
    class="alert alert-danger" />

Take advantage of powerful data-binding

MVVM pattern and data-binding expressions are used to access the UI components.

Validate with data annotation attributes

DotVVM integrates with common .NET validation mechanisms and practices.

Define how the validation should look like

You have plenty of options how to indicate invalid fields, for example using a CSS class.

HTML enhanced with DotVVM components

<div class="form-group">
    <dot:TextBox Text="{value: Number}" />

    <dot:Button Text="Increment"
                Click="{command: Increment()}" />
</div>

ViewModels written in C#

public class IncViewModel 
{
    public int Number { get; set; }

    public void Increment() 
    {
        Number++;
    }
}
DotVVM Academy illustration

Try DotVVM Install the Visual Studio extension and create a new project, or visit DotVVM academy and start in the browser.

Our team is happy to help! Wondering if DotVVM is the right choice for you?

DotVVM Coffee


Learn about various DotVVM features in short, 1-2 minute videos.