asp.net右月在右边的标签下

时间:2015-08-18 10:55:29

标签: c# html asp.net

这是我现在的代码/视图。

<form class="form-horizontal">
<div class="portlet-body form">
    <div class="form-group">
        @foreach (var date in ViewBag.MissingDays)
        {
            var isoDate = date.ToString("yyMMdd");
            <div class="col-md-2">
                <input type="checkbox" id="isoDate" name="isoDate" value="@isoDate" />
                @date.ToString("ddd").Substring(0, 2)
                @isoDate
            </div>
        }
    </div>
</div>

现在它会打印出这样的日期:&#34; Mo yymmdd tu yymmdd we yymmdd&#34; 但我想做的是,我想这样所有属于may的日期都可以在may标签下,10月以下的所有日期都会在10月以下等。

现在有点乱。enter image description here

所以我想尝试做的就是沿着这些方向做一些事情,它希望它说May,并且may中缺少的所有日期都将在该部分之下,依此类推。

这就是我从数据库中获取遗失的日子(它是我的数据库层)

        public List<DateTime> GetConsultantMissingDays(Guid consultantId)
    {
        //List<DateTime> dates = new List<DateTime>();

        DateTime oldDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddMonths(-3);
        var dates = db.TimeReports.Where(x => x.FK_ConsultantID == consultantId && x.Date >= oldDate).Select(x => x.Date);
        //db.

        return Constants.WorkDays.Except(dates).ToList();
    }

这就是我如何获取Viewbag.MissingDays(我的控制器)的日期

var missingdays = new DatabaseLayer().GetConsultantMissingDays(Constants.CurrentUser(User.Identity.Name));
        if (missingdays.Count == 0)
        {
            ViewData["missingDays"] = "";
        }
        else
        {
            ViewBag.MissingDays = missingdays;
        }

        ViewData.Model = projectData;

        return View();

1 个答案:

答案 0 :(得分:4)

我现在无法检查确切的HTML布局,但我可以给你一个提示;)

您应该按月对日期进行分组,然后迭代群组项目:

<form class="form-horizontal">
<div class="portlet-body form">
<div class="form-group">
    @foreach(var @group in ((List<DateTime>)ViewBag.MissingDays).GroupBy(x => x.Month))
    {
        <div class="col-md-2">
        foreach (var date in @group)
        {
            var isoDate = date.ToString("yyMMdd");
                 <input type="checkbox" id="isoDate" name="isoDate" value="@isoDate" />
                 @date.ToString("ddd").Substring(0, 2)
                 @isoDate
        }
        </div>
    }
</div>

您可以添加一些列标题以确定正确的月份。

编辑:根据@SimonGates评论 - 考虑到上述解决方案没有考虑到各种年份。如果有不同的年份,应该延长分组操作。