这是我现在的代码/视图。
<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月以下等。
所以我想尝试做的就是沿着这些方向做一些事情,它希望它说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();
答案 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评论 - 考虑到上述解决方案没有考虑到各种年份。如果有不同的年份,应该延长分组操作。