DotVVM Tree Logo

Open source MVVM framework
for ASP.NET Core and OWIN

Show more

Build new ASP.NET web apps with ready-made components
and great Visual Studio integration

Read More

Modernize ASP.NET Web Forms apps and move them to .NET Core
without rewriting everything

Read More

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

Interested? Learn the basic principles in a few short lessons.
Visit our DotVVM Academy now!

DotVVM Academy

Build your first DotVVM website today!

DotVVM Coffee

Short videos to watch during your coffee breaks
Learn about various DotVVM features in short, 1-2 minute videos.