@model IEnumerable<CityResponse>
@* Generated from Custom MVC Template. *@
@* Model namespace using directive should be added to _ViewImports.cshtml. *@
@{
var containerDivClass = "container"; // "container-fluid" can be used for full width
}
@{
/*
ViewBag and ViewData are the same collection (dictionary).
They carry extra data other than the model from a controller action to its view, or between views.
The value assigned will be shown in Views\Shared\_Layout.cshtml view's title tag of the head tag.
*/
ViewData["Title"] = "City List";
}
<div class="@containerDivClass">
<h1>@ViewData["Title"]</h1>
<hr />
</div>
@if (Model is not null)
{
<form asp-action="Index" autocomplete="off">
<div class="@containerDivClass">
<div class="row">
<div class="col-12 text-danger">
@*
TempData is used to carry extra data to the redirected controller action's view.
*@
@TempData["Message"]
</div>
</div>
<div class="row mb-3">
<div class="col-10 text-success">
@Model.Count() record(s) found.
</div>
<div class="col-2 text-end">
<a asp-action="Create">Create</a>
</div>
</div>
<table class="table table-striped table-hover">
<thead class="table-secondary">
<tr>
<th>
@Html.DisplayNameFor(model => model.CityName)
</th>
<th>
@Html.DisplayNameFor(model => model.Country)
</th>
<th>
@Html.DisplayNameFor(model => model.FilePath)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.CityName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Country.CountryName)
</td>
<td style="width:30%;">
@if (string.IsNullOrWhiteSpace(item.FilePath))
{
<span><i class="bx bx-image" style="font-size:x-large;"></i></span>
}
else
{
<img src="@item.FilePath" class="img-thumbnail" />
}
</td>
<td class="text-end w-25">
<a asp-action="Details" asp-route-id="@item.Id">Details</a> |
<a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
<a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
</td>
</tr>
}
</tbody>
</table>
</div>
</form>
}