Here is a clean, developer-friendly CSHTML (Razor) Cheat Sheet — perfect for quick reference. This cheat sheet covers syntax, data binding, tag helpers, loops, conditions, forms, partials, layout, and more.
1. Razor Syntax Basics
Inline C#
@DateTime.Now
@Model.Name
Code Block
@{
var title = "Product List";
}
<h2>@title</h2>
2. Model Binding
Strongly Typed View
@model Product
<h3>@Model.Name</h3>
List Model
@model IEnumerable<Product>
@foreach (var p in Model)
{
<p>@p.Name - @p.Price</p>
}
3. Razor Expressions
Condition
@if (Model.Stock > 0)
{
<span>In Stock</span>
}
else
{
<span>Out of Stock</span>
}
Switch
@switch (Model.Category)
{
case "Electronics":
<span>Electronics</span>
break;
default:
<span>Other</span>
break;
}
4. Loops
@for (int i = 0; i < products.Count; i++)
{
<p>@products[i].Name</p>
}
@foreach (var p in Model)
{
<p>@p.Name</p>
}
@while (condition)
{
<p>Running…</p>
}
5. Razor Comments
@* This will not appear in HTML *@
6. HTML Helpers
@Html.TextBoxFor(m => m.Name)
@Html.LabelFor(m => m.Price)
@Html.DropDownListFor(m => m.CategoryId, Model.Categories)
7. Tag Helpers (Most Important)
Anchor (link)
<a asp-action="Details" asp-route-id="@item.Id">View</a>
Form Tag Helper
<form asp-action="Create" method="post">
Input Tag Helper
<input asp-for="Name" class="form-control" />
Validation Tag Helpers
<span asp-validation-for="Name" class="text-danger"></span>
<div asp-validation-summary="All"></div>
Dropdown
<select asp-for="CategoryId" asp-items="Model.CategoryList"></select>
8. Layout (Master Page Equivalent)
Use Layout
@{
Layout = "_Layout";
}
Render Body
In _Layout.cshtml:
<body>
@RenderBody()
</body>
Optional Section
@section Scripts {
<script src="app.js"></script>
}
9. Partial Views
Render Partial View
@await Html.PartialAsync("_ProductCard", item)
Render Component (Advanced)
@await Component.InvokeAsync("CartSummary")
10. TempData, ViewData, ViewBag
ViewData
@ViewData["Title"]
ViewBag
@ViewBag.Message
TempData
@TempData["Success"]
11. Anti-forgery Token
<form method="post">
@Html.AntiForgeryToken()
ASP.NET Core automatically generates in <form asp-action>.
12. Using C# Classes in Razor
@using SampleMVCCoreProject.Models
@model Product
13. Render Scripts and Styles
@section Styles {
<link rel="stylesheet" href="~/css/products.css" />
}
@section Scripts {
<script src="~/js/products.js"></script>
}
14. Razor Shortcuts
| Syntax | Meaning |
|---|
| @: | Write plain text |
| @() | Inline C# as expression |
| @{} | Code block |
| @* *@ | Razor comment |
Example:
@:This is plain text
15. Useful Directives
@model Product
@using MyProject.Models
@inject IProductService ProductService
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
16. AJAX in CSHTML (No UpdatePanel)
$.get("/Product/GetStock/5", function (data) {
$("#stockDiv").html(data);
});
17. Render JSON in Razor
<script>
var product = @Html.Raw(Json.Serialize(Model));
</script>
18. Raw HTML Rendering
@Html.Raw(Model.Description)
19. Using JavaScript with Razor Variables
<script>
let price = "@Model.Price";
</script>
20. Bootstrap-friendly Razor Table Example
<table class="table table-striped">
@foreach (var item in Model)
{
<tr>
<td>@item.Name</td>
<td>@item.Category</td>
<td>@item.Price</td>
<td>
<a asp-action="Details" asp-route-id="@item.Id" class="btn btn-primary btn-sm">View</a>
</td>
</tr>
}
</table>