ConsoleMVC.Template
1.22.0
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet new install ConsoleMVC.Template@1.22.0
This package contains a .NET Template Package you can call from the shell/command line.
ConsoleMVC Application Template
A dotnet new project template for ConsoleMVC: an MVC framework for console applications inspired by ASP.NET Core MVC.
Installation
dotnet new install ConsoleMVC.Template
Usage
# Create a new ConsoleMVC project
dotnet new consolemvc -n MyApp
# Run it
cd MyApp
dotnet run
# Or create it with a test project (MyApp.Tests) and run the tests
dotnet new consolemvc -n MyApp --tests
dotnet test MyApp/MyApp.Tests
| Option | Default | Purpose |
|---|---|---|
--tests |
off | Adds MyApp.Tests, an xUnit project that runs the application with ConsoleMVC.Testing: a snapshot of the home menu (__snapshots__/home-menu.txt) and the greeting form driven with typed lines and arrow keys |
What You Get
A ready-to-run console application structured with the MVC pattern:
- Program.cs: entry point using the familiar
CreateBuilder(),Build(),RunAsync()pattern, with a middleware that shows the current page in the terminal title - Controllers/: controller classes that handle actions and return results
- Views/:
.cvwviews using C-View Markup (<box>,<text>,<table>,<columns>,<input>,<select>,<checkbox>,<menu>) and C#, compiled at build time;Views/Sharedholds the layout and a partial view - Models/: ViewModel DTOs passed from controllers to views
- Services/: an
IGreetingServiceregistered withbuilder.ServicesinProgram.cs, configured byGreetingOptions - appsettings.json: settings read by
builder.Configuration(environment variables and command-line arguments override them)
The template includes working examples of:
- Navigation:
<menu>elements moving between controllers and actions (Home,About), Back options, and breadcrumbs in the layout - Tables, columns and themes: a feature tour page with a
<table>generated from the model,<columns>that stack on narrow terminals, and theme classes (class="panel") - Partial views and layouts: the home and about pages share
Views/Shared/PageHeader.cvwthrough<partial>, andViews/Shared/_Layout.cvwadds an app bar (breadcrumbs on the left, the app name on the right) and a separator above every menu - Form data posting with model binding: a greeting form with a text
<input>, a colour<select>(arrow keys in a terminal) and a<checkbox>, posted to a controller as aGreetFormModelclass, validated with[Required]and[StringLength]and showing errors with<errors /> - Logging:
Program.cssends logs tologs/app.logwithbuilder.Logging.AddFile, since the console shows the application - Configuration: the greeting's salutation comes from the
Greetingsection ofappsettings.jsonthroughIOptions<GreetingOptions>; trydotnet run -- --Greeting:Salutation=Hi - Dependency injection:
GreetControllerreceivesIGreetingServicethrough its constructor and the result view reads it with@inject - Form data posting with simple parameters: a calculator with two
<number>fields and a<radio>for the operator, posting individual values (int a,int b,string op) directly to action method parameters
IDE Support
For .cvw file recognition, syntax highlighting, and icon support in JetBrains Rider, install the ConsoleMVC CVWSupport plugin:
Learn More
- ConsoleMVC.Framework NuGet Package
- ConsoleMVC.Testing NuGet Package: test the application with scripted input and snapshots
- Guides
- GitHub Repository
-
net10.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.