Cheat Sheet

ASP.Net MVC Cheat Sheet


1. Create a New Project


dotnet new mvc -n MyMvcApp       // Create a new MVC project

2. Run the Application


dotnet run                         // Run the application
dotnet build                       // Build the project
dotnet publish -c Release          // Publish the project for production

3. Controllers


public class MyController : Controller {
  public IActionResult Index() {
    return View();
  }
}

4. Actions


public class MyController : Controller {
  public IActionResult Index() {
    return View();
  }
  [HttpPost]
  public IActionResult Create(MyModel model) {
    return RedirectToAction(`Index`);
  }
}

5. Views


@model MyModel
<h1>@Model.Title</h1>
<p>@Model.Description</p>

6. Razor Syntax


@{
  var name = `John Doe`;
}
<h1>Hello, @name!</h1>

7. Model Binding


public class MyController : Controller {
  [HttpPost]
  public IActionResult Create([Bind(`Name,Description`)] MyModel model) {
    return RedirectToAction(`Index`);
  }
}

8. Validation


public class MyModel {
  [Required]
  public string Name { get; set; }
  [Required]
  public string Description { get; set; }
}

9. Routing


routes.MapRoute(
  name: `default`,
  template: `{controller=Home}/{action=Index}/{id?}`);

10. Areas


public class MyAreaRegistration : AreaRegistration {
  public override string AreaName {
    get { return `MyArea`; }
  }
  public override void RegisterArea(AreaRegistrationContext context) {
    context.MapRoute(
      `MyArea_default`,
      `MyArea/{controller}/{action}/{id}`,
      new { action = `Index`, id = UrlParameter.Optional });
  }
}

11. Layouts


@{
  Layout = `~/Views/Shared/_Layout.cshtml`;
}

12. Partial Views


@Html.Partial(`_MyPartialView`, model)

13. Child Actions


[ChildActionOnly]
public ActionResult MyChildAction() {
  return PartialView(`_MyPartialView`, model);
}

14. Sections


@RenderSection(`MySection`, required: false)

15. Bundling and Minification


bundles.Add(new ScriptBundle(`~/bundles/jquery`).Include(
  `~/Scripts/jquery-{version}.js`));
bundles.Add(new StyleBundle(`~/Content/css`).Include(
  `~/Content/site.css`));

16. Authentication


[Authorize]
public class MyController : Controller {
  public IActionResult Index() {
    return View();
  }
}

17. Authorization


[Authorize(Roles = `Admin`)]
public class MyController : Controller {
  public IActionResult Index() {
    return View();
  }
}

18. Custom Authorization


public class MyAuthorizeAttribute : AuthorizeAttribute {
  protected override bool AuthorizeCore(HttpContextBase httpContext) {
    // Custom authorization logic
    return true;
  }
}

19. Error Handling


[HandleError]
public class MyController : Controller {
  public IActionResult Index() {
    return View();
  }
}

20. Custom Error Pages


<customErrors mode=`On` defaultRedirect=`~/Error`>
  <error statusCode=`404` redirect=`~/Error/NotFound` />
</customErrors>

21. Logging


public class MyController : Controller {
  private readonly ILogger _logger;
  public MyController(ILogger logger) {
    _logger = logger;
  }
  public IActionResult Index() {
    _logger.LogInformation(`Index action executed`);
    return View();
  }
}

22. Dependency Injection


public class MyController : Controller {
  private readonly IMyService _myService;
  public MyController(IMyService myService) {
    _myService = myService;
  }
}

23. ViewData and ViewBag


ViewData[`Message`] = `Hello from ViewData!`;
ViewBag.Message = `Hello from ViewBag!`;

24. TempData


TempData[`Message`] = `This is a temporary message.`;

25. ModelState Validation


if (!ModelState.IsValid) {
  return View(model);
}

26. Custom Model Binder


public class MyModelBinder : IModelBinder {
  public Task BindModelAsync(ModelBindingContext bindingContext) {
    // Custom binding logic
    return Task.CompletedTask;
  }
}

27. Action Filters


public class MyActionFilter : IActionFilter {
  public void OnActionExecuting(ActionExecutingContext context) {
    // Logic before action executes
  }
  public void OnActionExecuted(ActionExecutedContext context) {
    // Logic after action executes
  }
}

28. Result Filters


public class MyResultFilter : IResultFilter {
  public void OnResultExecuting(ResultExecutingContext context) {
    // Logic before result executes
  }
  public void OnResultExecuted(ResultExecutedContext context) {
    // Logic after result executes
  }
}

29. Exception Filters


public class MyExceptionFilter : IExceptionFilter {
  public void OnException(ExceptionContext context) {
    // Handle exception
  }
}

30. Resource Filters


public class MyResourceFilter : IResourceFilter {
  public void OnResourceExecuting(ResourceExecutingContext context) {
    // Logic before resource executes
  }
  public void OnResourceExecuted(ResourceExecutedContext context) {
    // Logic after resource executes
  }
}

31. Global Filters


services.AddControllers(options => {
  options.Filters.Add(new MyActionFilter());
});

32. Custom Error Pages


app.UseStatusCodePagesWithReExecute(`/error/{0}`);

33. Caching


services.AddResponseCaching();
app.UseResponseCaching();

34. Memory Cache


services.AddMemoryCache();

35. Distributed Cache


services.AddDistributedMemoryCache();

36. Session State


services.AddSession();
app.UseSession();

37. Cookie Policy


services.Configure<CookiePolicyOptions>(options => {
  options.CheckConsentNeeded = context => true;
  options.MinimumSameSitePolicy = SameSiteMode.None;
});

38. Anti-Forgery Tokens


services.AddAntiforgery(options => {
  options.HeaderName = `X-XSRF-TOKEN`;
});

39. HTTPS Redirection


app.UseHttpsRedirection();

40. HSTS (HTTP Strict Transport Security)


app.UseHsts();

41. Content Security Policy


app.UseCsp(options => {
  options.DefaultSources(s => s.Self());
});

42. Rate Limiting


services.AddRateLimiter(options => {
  options.AddPolicy(`RateLimit`, policy => {
    policy.Limit = 100;
    policy.Period = TimeSpan.FromMinutes(1);
  });
});

43. Health Checks with Custom Checks


builder.Services.AddHealthChecks()
  .AddCheck(`MyCustomCheck`, () => HealthCheckResult.Healthy());

44. API Documentation with Swagger


app.UseSwagger();
app.UseSwaggerUI(c => {
  c.SwaggerEndpoint(`/swagger/v1/swagger.json`, `My API V1`);
});

45. Using View Components


public class MyViewComponent : ViewComponent {
  public IViewComponentResult Invoke() {
    return View();
  }
}

46. Razor View Engine


@model MyModel
<h1>@Model.Title</h1>
<p>@Model.Description</p>

47. Partial Views


@Html.Partial(`_MyPartialView`, model)

48. Layouts


@{
  Layout = `_Layout`;
}

49. ViewBag and ViewData


ViewBag.Message = `Hello from ViewBag!`;
ViewData[`Message`] = `Hello from ViewData!`;

50. TempData


TempData[`Message`] = `This is a temporary message.`;

51. ModelState Validation


if (!ModelState.IsValid) {
  return View(model);
}

52. Custom Model Binder


public class MyModelBinder : IModelBinder {
  public Task BindModelAsync(ModelBindingContext bindingContext) {
    // Custom binding logic
    return Task.CompletedTask;
  }
}

53. Action Filters


public class MyActionFilter : IActionFilter {
  public void OnActionExecuting(ActionExecutingContext context) {
    // Logic before action executes
  }
  public void OnActionExecuted(ActionExecutedContext context) {
    // Logic after action executes
  }
}

54. Result Filters


public class MyResultFilter : IResultFilter {
  public void OnResultExecuting(ResultExecutingContext context) {
    // Logic before result executes
  }
  public void OnResultExecuted(ResultExecutedContext context) {
    // Logic after result executes
  }
}

55. Exception Filters


public class MyExceptionFilter : IExceptionFilter {
  public void OnException(ExceptionContext context) {
    // Handle exception
  }
}

56. Resource Filters


public class MyResourceFilter : IResourceFilter {
  public void OnResourceExecuting(ResourceExecutingContext context) {
    // Logic before resource executes
  }
  public void OnResourceExecuted(ResourceExecutedContext context) {
    // Logic after resource executes
  }
}

57. Global Filters


services.AddControllers(options => {
  options.Filters.Add(new MyActionFilter());
});

58. Custom Error Pages


app.UseStatusCodePagesWithReExecute(`/error/{0}`);

59. Caching


services.AddResponseCaching();
app.UseResponseCaching();

60. Memory Cache


services.AddMemoryCache();

61. Distributed Cache


services.AddDistributedMemoryCache();

62. Session State


services.AddSession();
app.UseSession();

63. Cookie Policy


services.Configure<CookiePolicyOptions>(options => {
  options.CheckConsentNeeded = context => true;
  options.MinimumSameSitePolicy = SameSiteMode.None;
});

64. Anti-Forgery Tokens


services.AddAntiforgery(options => {
  options.HeaderName = `X-XSRF-TOKEN`;
});

65. HTTPS Redirection


app.UseHttpsRedirection();

66. HSTS (HTTP Strict Transport Security)


app.UseHsts();

67. Content Security Policy


app.UseCsp(options => {
  options.DefaultSources(s => s.Self());
});

68. Rate Limiting


services.AddRateLimiter(options => {
  options.AddPolicy(`RateLimit`, policy => {
    policy.Limit = 100;
    policy.Period = TimeSpan.FromMinutes(1);
  });
});

69. Health Checks with Custom Checks


builder.Services.AddHealthChecks()
  .AddCheck(`MyCustomCheck`, () => HealthCheckResult.Healthy());

70. API Documentation with Swagger


app.UseSwagger();
app.UseSwaggerUI(c => {
  c.SwaggerEndpoint(`/swagger/v1/swagger.json`, `My API V1`);
});

71. Using View Components

public class MyViewComponent : ViewComponent { public IViewComponentResult Invoke() { return View(); }}

72. Razor View Engine


@model MyModel
<h1>@Model.Title</h1>
<p>@Model.Description</p>

73. Partial Views


@Html.Partial(`_MyPartialView`, model)

74. Layouts


@{
  Layout = `_Layout`;
}

75. ViewBag and ViewData


ViewBag.Message = `Hello from ViewBag!`;
ViewData[`Message`] = `Hello from ViewData!`;

76. TempData


TempData[`Message`] = `This is a temporary message.`;

77. ModelState Validation


if (!ModelState.IsValid) {
  return View(model);
}

78. Custom Model Binder


public class MyModelBinder : IModelBinder {
  public Task BindModelAsync(ModelBindingContext bindingContext) {
    // Custom binding logic
    return Task.CompletedTask;
  }
}

79. Action Filters


public class MyActionFilter : IActionFilter {
  public void OnActionExecuting(ActionExecutingContext context) {
    // Logic before action executes
  }
  public void OnActionExecuted(ActionExecutedContext context) {
    // Logic after action executes
  }
}

80. Result Filters


public class MyResultFilter : IResultFilter {
  public void OnResultExecuting(ResultExecutingContext context) {
    // Logic before result executes
  }
  public void OnResultExecuted(ResultExecutedContext context) {
    // Logic after result executes
  }
}

81. Exception Filters


public class MyExceptionFilter : IExceptionFilter {
  public void OnException(ExceptionContext context) {
    // Handle exception
  }
}

82. Resource Filters


public class MyResourceFilter : IResourceFilter {
  public void OnResourceExecuting(ResourceExecutingContext context) {
    // Logic before resource executes
  }
  public void OnResourceExecuted(ResourceExecutedContext context) {
    // Logic after resource executes
  }
}

83. Global Filters


services.AddControllers(options => {
  options.Filters.Add(new MyActionFilter());
});

84. Custom Error Pages


app.UseStatusCodePagesWithReExecute(`/error/{0}`);

85. Caching


services.AddResponseCaching();
app.UseResponseCaching();

86. Memory Cache


services.AddMemoryCache();

87. Distributed Cache


services.AddDistributedMemoryCache();

88. Session State


services.AddSession();
app.UseSession();

89. Cookie Policy


services.Configure<CookiePolicyOptions>(options => {
  options.CheckConsentNeeded = context => true;
  options.MinimumSameSitePolicy = SameSiteMode.None;
});

90. Anti-Forgery Tokens


services.AddAntiforgery(options => {
  options.HeaderName = `X-XSRF-TOKEN`;
});

91. HTTPS Redirection


app.UseHttpsRedirection();

92. HSTS (HTTP Strict Transport Security)


app.UseHsts();

93. Content Security Policy


app.UseCsp(options => {
  options.DefaultSources(s => s.Self());
});

94. Rate Limiting


services.AddRateLimiter(options => {
  options.AddPolicy(`RateLimit`, policy => {
    policy.Limit = 100;
    policy.Period = TimeSpan.FromMinutes(1);
  });
});

95. Health Checks with Custom Checks


builder.Services.AddHealthChecks()
  .AddCheck(`MyCustomCheck`, () => HealthCheckResult.Healthy());

96. API Documentation with Swagger


app.UseSwagger ();
app.UseSwaggerUI(c => {
  c.SwaggerEndpoint(`/swagger/v1/swagger.json`, `My API V1`);
});

97. Using View Components


public class MyViewComponent : ViewComponent {
  public IViewComponentResult Invoke() {
    return View();
  }
}

98. Razor View Engine


@model MyModel
<h1>@Model.Title</h1>
<p>@Model.Description</p>

99. Partial Views


@Html.Partial(`_MyPartialView`, model)

100. Layouts


@{
  Layout = `_Layout`;
}

Written by Surfside Media

Senior Full Stack Developer specializing in Web Technologies.