Чтобы сгенерировать календарь в виде таблицы, вам нужно сгенерировать сетку из 7 столбцов и 6 строк, чтобы учесть все возможные месяцы, поэтому цикл должен повторяться 42 раза (а не количество дней в месяце), где первый ячейка - последнее воскресенье предыдущего месяца (если текущий месяц не начинается с воскресенья)
Чтобы вычислить дату в первой ячейке, используйте
DateTime startDate = firstDayOfTheMonth.AddDays(-(int)firstDayOfTheMonth.DayOfWeek);
Затем сгенерировать таблицу в вашем представлении
<table>
<thead>
.... // add day name headings
</thead>
<tbody>
<tr>
@for (int i = 0; i < 42; i++)
{
DateTime date = startDate.AddDays(i);
if (i % 7 == 0 && i > 0)
{
@:</tr><tr> // start a new row every 7 days
}
<td>@date.Day</td>
}
</tr>
</tbody>
</table>
Вы также можете по-разному стилизовать любые дни, не относящиеся к текущему месяцу, и в этом случае вы можете условно добавить имя класса, например
if (startDate.Month == getDate.month)
{
<td class="current">@date.Day</td>
}
else
{
<td>@date.Day</td>
}