gpt4 book ai didi

asp.net-mvc - 在 asp.net mvc 中显示带有自定义超链接的日历年

转载 作者:行者123 更新时间:2023-12-05 00:09:12 26 4
gpt4 key购买 nike

我希望创建一个 MVC 网页,以日历格式显示一年中的 12 个月。在每月的每一天中,我只会将有任何事件的日期(来自数据库的数据)加粗。事件日期也将超链接到/Activity/2008/12/25 之类的路线

我将尝试尝试使用 asp.net ajax 控件工具包日历控件,但想知道是否还有其他人有任何建议。

最佳答案

渲染日历并不是特别复杂。通过在 System.Globalization 和 DateTime 中使用 DateTimeFormatInfo 可以检索所有必要的信息:

  • DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek
  • DateTimeFormatInfo.CurrentInfo.GetMonthName(month)
  • DateTimeFormatInfo.CurrentInfo.GetAbbreviatedDayName((DayOfWeek)dayNumber)

  • 日历中的一个月可以在表格中呈现:
    _ _ _ 1 2 3 4 
    5 6 7 8 9 ...

    要在开始时确定空单元格的数量,可以使用以下方法:
    DateTime date = new DateTime(year, month, 1);
    int emptyCells = ((int)date.DayOfWeek + 7
    - (int)DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek) % 7;

    由于一个月最多有 31 天,开始时最多有 6 个空单元格,因此一个月可以在最大 Ceil(37/7) = 6 行上呈现。所以一个月内最多可​​以渲染 42 个单元格,其中一些是空的。

    表格中每 7 个(一周中的天数)单元格插入一个新行。
    int days = DateTime.DaysInMonth(year, month);
    for (int i = 0; i != 42; i++)
    {
    if (i % 7 == 0) {
    writer.WriteLine("<tr>");
    if( i > 0 ) writer.WriteLine("</tr>");
    }

    if (i < emptyCells || i >= emptyCells + days) {
    writer.WriteLine("<td class=\"cal-empty\">&nbsp;</td>");
    } else {
    writer.WriteLine("<td class=\"cal-day\"\">" + date.Day + "</td>");
    date = date.AddDays(1);
    }
    }

    此外,当日期有事件时,只需在非空单元格中添加到所需路线的附加链接。

    关于asp.net-mvc - 在 asp.net mvc 中显示带有自定义超链接的日历年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/764981/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com