{"id":13429635,"url":"https://github.com/riganti/dotvvm","last_synced_at":"2025-05-14T02:02:30.772Z","repository":{"id":22882395,"uuid":"26230481","full_name":"riganti/dotvvm","owner":"riganti","description":"Open source MVVM framework for Web Apps","archived":false,"fork":false,"pushed_at":"2025-05-04T16:06:36.000Z","size":64279,"stargazers_count":765,"open_issues_count":174,"forks_count":95,"subscribers_count":49,"default_branch":"main","last_synced_at":"2025-05-05T20:47:21.803Z","etag":null,"topics":["aspnet","aspnetcore","c-sharp","dotnet","dotnet-core","dotnet-template","framework","mvvm","owin"],"latest_commit_sha":null,"homepage":"https://www.dotvvm.com","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/riganti.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"contributing.md","funding":null,"license":"LICENSE","code_of_conduct":"code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2014-11-05T17:14:34.000Z","updated_at":"2025-04-27T21:56:01.000Z","dependencies_parsed_at":"2024-01-19T14:39:57.526Z","dependency_job_id":"a73e6479-aaa1-4458-8b20-7025cb93af7f","html_url":"https://github.com/riganti/dotvvm","commit_stats":{"total_commits":6465,"total_committers":90,"mean_commits":71.83333333333333,"dds":0.7042536736272236,"last_synced_commit":"954f93d9e70a4679b9f98144d0a7f837d9525c08"},"previous_names":[],"tags_count":57,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riganti%2Fdotvvm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riganti%2Fdotvvm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riganti%2Fdotvvm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/riganti%2Fdotvvm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/riganti","download_url":"https://codeload.github.com/riganti/dotvvm/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254052658,"owners_count":22006716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aspnet","aspnetcore","c-sharp","dotnet","dotnet-core","dotnet-template","framework","mvvm","owin"],"created_at":"2024-07-31T02:00:42.898Z","updated_at":"2025-05-14T02:02:30.739Z","avatar_url":"https://github.com/riganti.png","language":"C#","readme":"\u003cimg src=\"./logo.svg\" width=\"250px\" /\u003e\n\nComponent-based MVVM framework for ASP.NET\n==================\n\n[![License](https://img.shields.io/github/license/riganti/dotvvm)](https://github.com/riganti/dotvvm/blob/main/LICENSE)\n[![Gitter](https://badges.gitter.im/riganti/dotvvm.svg)](https://gitter.im/riganti/dotvvm)\n[![GitHub Actions](https://github.com/riganti/dotvvm/actions/workflows/main.yml/badge.svg)](https://github.com/riganti/dotvvm/actions/)\n[![NuGet](https://img.shields.io/nuget/v/DotVVM?logo=nuget)](https://www.nuget.org/packages/DotVVM/)\n\n[DotVVM](https://www.dotvvm.com) lets you build interactive web UIs with **just C# and HTML** using the **MVVM** approach.\n\nIt simplifies building of **line of business web apps** and ships with many built-in controls like [GridView](https://www.dotvvm.com/docs/controls/builtin/GridView/latest), [FileUpload](https://www.dotvvm.com/docs/controls/builtin/FileUpload/latest), [Validator](https://www.dotvvm.com/docs/controls/builtin/Validator/latest) and more.\n\n## How does DotVVM work?\n\nThe **Views** in DotVVM use HTML syntax with __controls__ and __data-bindings__.\n\nThe **ViewModels** are plain C# objects with properties and methods.\n\nYou can access the ViewModel properties using `{value: Name}` and call ViewModel methods using `{command: Submit()}`.\n\n```html\n\u003cdiv class=\"form-control\"\u003e\n    \u003cdot:TextBox Text=\"{value: Name}\" /\u003e\n\u003c/div\u003e\n\u003cdiv class=\"form-control\"\u003e\n    \u003cdot:TextBox Text=\"{value: Email}\" /\u003e\n\u003c/div\u003e\n\u003cdiv class=\"button-bar\"\u003e\n    \u003cdot:Button Text=\"Submit\" Click=\"{command: Submit()}\" /\u003e\n\u003c/div\u003e\n```\n\n```C#\npublic class ContactFormViewModel\n{\n    [Required]\n    public string Name { get; set; }\n\n    [EmailAddress]\n    public string Email { get; set; }\n\n    public void Submit()\n    {\n        // ...\n    }\n}\n```\n\n**DotVVM** comes with many features including:\n\n* A rich set of built-in controls\n    + [GridView](https://www.dotvvm.com/docs/controls/builtin/GridView/latest), [Repeater](https://www.dotvvm.com/docs/controls/builtin/Repeater/latest)\n    + [FileUpload](https://www.dotvvm.com/docs/controls/builtin/FileUpload/latest)\n    + [TextBox](https://www.dotvvm.com/docs/controls/builtin/TextBox/latest), [ComboBox](https://www.dotvvm.com/docs/controls/builtin/ComboBox/latest), [CheckBox](https://www.dotvvm.com/docs/controls/builtin/CheckBox/latest), [RadioButton](https://www.dotvvm.com/docs/controls/builtin/RadioButton/latest)\n    + [Button](https://www.dotvvm.com/docs/controls/builtin/Button/latest), [LinkButton](https://www.dotvvm.com/docs/controls/builtin/LinkButton/latest), [RouteLink](https://www.dotvvm.com/docs/controls/builtin/RouteLink/latest)\n    + [Validator](https://www.dotvvm.com/docs/controls/builtin/Validator/latest), [ValidationSummary](https://www.dotvvm.com/docs/controls/builtin/ValidationSummary/latest)\n    + ...\n* [Routing](https://www.dotvvm.com/docs/tutorials/basics-routing/latest)\n* [Master pages](https://www.dotvvm.com/docs/tutorials/basics-master-pages/latest)\n* [Advanced validation rules](https://www.dotvvm.com/docs/tutorials/basics-validation/latest) integrated with .NET data annotation attributes\n* Support for [.NET cultures](https://www.dotvvm.com/docs/tutorials/basics-globalization/latest), number \u0026 date formats and RESX localization\n* [SPA (Single Page App)](https://www.dotvvm.com/docs/tutorials/basics-single-page-applications-spa/latest) support\n* [User controls](https://www.dotvvm.com/docs/tutorials/control-development-introduction/latest)\n* MVVM with [testable ViewModels](https://www.dotvvm.com/docs/tutorials/advanced-testing-viewmodels/latest) and [Dependency injection](https://www.dotvvm.com/docs/tutorials/advanced-ioc-di-container/latest)\n* [Server-side rendering](https://www.dotvvm.com/docs/tutorials/basics-server-side-html-generation/latest)\n* Binding to [REST APIs](https://www.dotvvm.com/docs/tutorials/basics-rest-api-bindings/latest) and [patching viewmodel using static commands](https://www.dotvvm.com/docs/tutorials/basics-static-command-services/latest)\n* Can run side-by-side with other ASP.NET frameworks (Web Forms, MVC, Razor Pages)\n* **IntelliSense and tooling for Visual Studio [2019](https://marketplace.visualstudio.com/items?itemName=TomasHerceg.DotVVM-VSExtension2019), [2022](https://marketplace.visualstudio.com/items?itemName=TomasHerceg.DotVVM-VSExtension2022) and [Code](https://marketplace.visualstudio.com/items?itemName=TomasHerceg.dotvvm-vscode)**\n\n## Getting started with DotVVM\n\nLearn the basic principles of DotVVM in our [DotVVM Academy](https://academy.dotvvm.com) tutorials.\n\nThe easiest way to start with DotVVM is to download **[DotVVM for Visual Studio](https://www.dotvvm.com/landing/dotvvm-for-visual-studio-extension)** and do **File \u003e New \u003e Project**.\n\n* Free extension for [Visual Studio 2019](https://marketplace.visualstudio.com/items?itemName=TomasHerceg.DotVVM-VSExtension2019)\n* Free extension for [Visual Studio 2022](https://marketplace.visualstudio.com/items?itemName=TomasHerceg.DotVVM-VSExtension2022)\n\nYou can also [install DotVVM in existing ASP.NET projects](https://www.dotvvm.com/docs/tutorials/how-to-start-existing-app/latest) and use it side-by-side with other ASP.NET frameworks (Web Forms, MVC, Razor Pages).\n\nThere is also [dotnet new template](https://www.dotvvm.com/docs/tutorials/how-to-start-command-line/latest) for those who prefer command-line approach. You can get our free extension for [Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=TomasHerceg.dotvvm-vscode).\n\n## Current status\n\n**DotVVM** is used in production by hundreds of developers and companies. The first stable release was in June 2016.\n\n|                         | ASP.NET Core                | OWIN                  |\n|-------------------------|-----------------------------|-----------------------|\n| Current stable version  | `DotVVM.AspNetCore 4.2.*`   | `DotVVM.Owin 4.2.*`   |\n| Minimum runtime version | `.NET 6.0`                  | `.NET 4.7.2`          |\n| Minimum ASP.NET version | `ASP.NET Core 6.0`          | `OWIN 4.2.2`          |\n\nYou can find the plans for next releases in the [roadmap](roadmap.md).\n\n## Commercial components \u0026 tools\n\n**DotVVM** framework is open source and **will always be free to use**. It's developed under [Apache license]().\n\nThere are also **free extensions** for Visual Studio and VS Code available. They are not open source, but they will also be free to use.\n\nYou can get more productive with DotVVM and **support development of the framework** by purchasing commercial components and tools developed by the creators of the framework:\n\n* [Bootstrap for DotVVM](https://www.dotvvm.com/landing/bootstrap-for-dotvvm) brings more than fifty **Bootstrap 3 and 4** controls that are easy to use and integrate well with DotVVM validation and data-bindings.\n* [DotVVM Business Pack](https://www.dotvvm.com/landing/business-pack) contains more than 30 enterprise-ready controls for large line of business web apps.\n* [DotVVM Pro for Visual Studio](https://www.dotvvm.com/landing/dotvvm-for-visual-studio-professional-extension) offers more features than the free extensions - IntelliSense for data-binding expressions, real-time error checking and much more.\n\n## Get involved\n\nWe'll be glad to accept any contribution. It doesn't need to be a pull-request - you can help us by spreading the word about the project in a blog or a user group, fix a typo in a documentation or send us your feedback and thoughts.\n\nYou can find more info in [Contribution Guidelines](contributing.md). We kindly ask you to respect the [Code of Conduct](code-of-conduct.md).\n\n## Feedback\n\nFeedback is crucial to make DotVVM better. You can reach us at any time on our [Gitter Chat](https://gitter.im/riganti/dotvvm).\n\n## .NET Foundation\n\nThis project is supported by the [.NET Foundation](https://dotnetfoundation.org).\n\n## Further reading\n\n* [DotVVM.com](https://www.dotvvm.com)\n* [DotVVM Blog](https://www.dotvvm.com/blog)\n* [Documentation](https://www.dotvvm.com/docs)\n* [Twitter @dotvvm](https://twitter.com/dotvvm)\n* [Gitter Chat](https://gitter.im/riganti/dotvvm)\n* [Samples](https://github.com/search?q=topic%3Adotvvm-sample+org%3Ariganti\u0026type=Repositories)\n* [Roadmap](https://github.com/riganti/dotvvm/blob/master/roadmap.md)\n","funding_links":[],"categories":["Frameworks, Libraries and Tools","Web Frameworks","框架, 库和工具","framework","Web框架","NET Conf"],"sub_categories":["Application Frameworks","应用程序框架","GUI - other"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Friganti%2Fdotvvm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Friganti%2Fdotvvm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Friganti%2Fdotvvm/lists"}