Roadmap › ASP.NET Core MVC (and Razor Pages) › Module: MVC Basics
Lessons in this course (15)
3. Controllers, actions and action results
Basic★ Must knowLesson 3 of 15
csharp
public class ProductsController(IProductService products) : Controller
{
public async Task<IActionResult> Index() => View(await products.GetAllAsync());
public async Task<IActionResult> Details(int id)
{
var p = await products.GetAsync(id);
return p is null ? NotFound() : View(p);
}
[HttpGet] public IActionResult Create() => View();
[HttpPost, ValidateAntiForgeryToken]
public async Task<IActionResult> Create(ProductInput input)
{
if (!ModelState.IsValid) return View(input); // redisplay with errors
var id = await products.CreateAsync(input);
TempData["Message"] = "Product created";
return RedirectToAction(nameof(Details), new { id }); // Post-Redirect-Get
}
}| Result | Helper |
|---|---|
| HTML view | View(), PartialView() |
| Redirect | Redirect(), RedirectToAction(), RedirectToRoute(), LocalRedirect() |
| Data | Json(), Content(), File(), Ok() |
| Status | NotFound(), BadRequest(), Unauthorized(), Forbid(), StatusCode(503) |
Post-Redirect-Get (PRG) prevents duplicate form submissions on browser refresh.