ASP.NET Core app
Using Yeoman to generate a ASP.NET Core app from a template¶
Install Node.js and npm¶
To get started with Yeoman, install Node.js. The installer includes Node.js and npm.
- for Mac OS X
- for Windows OS
Install Yeoman and Bower¶
Install generator-aspnet¶
Run with
See also: Building Projects with Yeoman on docs.asp.net
Optionaly install the yeoman extension in Visual Studio Code¶
Architecture¶
Onion Architecture In ASP.NET Core MVC
Example of a Web API built on ASP.NET Core
Routing Examples¶
public class TestController : Controller
{
// /hello
[Route("/hello")]
public IActionResult Hello() => Ok("Hello");
// /hi only GET method
[Route("/hi")] [HttpGet]
public IActionResult Hi() => Ok("Hi");
//Alternative for previous
[HttpGet("/hi")]
public IActionResult Hi() => Ok("Hi");
}
//Route prefix
[Route("test")]
public class TestController2 : Controller
{
//You can have multiple routes on an action
[Route("")] // /test
[Route("hello")] // /test/hello
public IActionResult Hello() => Ok("Hello");
// Maps to both: // /test/hi, and: // /hi
[Route("/hi")] // Overrides the prefix with /, you can also use ~/
[Route("hi")]
public IActionResult Hi() => Ok("Hi");
// /test/greet/Joon -> maps Joon to the name parameter
[Route("greet/{name}")]
public IActionResult Greet(string name) => Ok($"Hello {name}!");
//Parameters can be optional
// /test/greetopt -> name == null
// /test/greetopt/Joon -> name == Joon
[Route("greetopt/{name?}")]
public IActionResult GreetOptional(string name) => Ok(name == null ? "No name" : "Hi!");
}
// You can use [controller], [action], and [area] to create generic templates
[Route("[controller]/[action]")]
public class MyController : Controller
{
// /my/info
public IActionResult Info() => Ok("Info");
// /my/i
[Route("/[controller]/i")]
public IActionResult Info2() => Ok("Info2"); }
[Route("users")]
public class SelectionController : Controller
{
//You can use constraints to influence route selection
//Do not use for validation!
// /users/123
[Route("{id:int}")]
public IActionResult Int(int id) => Ok($"Looked up user id {id}");
// /users/joonas
[Route("{name:alpha}")]
public IActionResult String(string name) => Ok($"User name {name}");
}