所以我使用的是JQuery.datePicker示例... http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerStartEnd.html
我让Jquery日历工作正常,但它只允许我一次输入1个日期并将其保存到数据库。
我希望用户选择一个开始日期和一个多日期,在日期和每一天运行循环到数据库。
在某一刻稍微丢失,任何帮助都会受到赞赏....
以下是我对ActionResult create()//的观点的一部分,它允许用户添加新的一天......
<form action ="ListHolidays" id="listHolidays" method="post">
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Holiday</legend>
<div>
@Html.LabelFor(model => model.PersonId, "Person")
</div>
<div>
@Html.DropDownListFor(model => model.PersonId,
new SelectList(ViewBag.Id, "Value", "Text"),
"---Select---"
)
@Html.ValidationMessageFor(model => model.PersonId)
</div>
<div>
@Html.LabelFor(model => model.HolidayDate)
</div>
<div>
@Html.TextBoxFor(model => model.HolidayDate)
@Html.TextBoxFor(model => model.endDate)
<script>
$("#HolidayDate").addClass('date-pick');
$("#endDate").addClass('date-pick');
//$('.date-pick').datePicker//({dateFormat: 'dd-mm-yy'}).val();
$(function ()
{
$('.date-pick').datePicker()
$('#HolidayDate').bind('dpClosed',
function (e, selectedDates)
{
var d = selectedDates[0];
if (d)
{
d = new Date(d);
$('#endDate').dpSetStartDate(d.addDays(1).asString());
}
}
);
$('#endDate').bind('dpClosed',
function (e, selectedDates)
{
var d = selectedDates[0];
if (d)
{
d = new Date(d);
$('#HolidayDate').dpSetEndDate(d.addDays(-1).asString());
}
}
);
});
</script>
@Html.ValidationMessageFor(model => model.HolidayDate)
</div>
<p>
<input type="submit" value="Create"/>
</p>
和我的listHolidays帖子:
[HttpPost]
public ActionResult listHolidays(Holiday holiday, int? PersonId, string HolidayDate, string endDate)
{
IList<DateTime> dates = new List<DateTime>();
dates.Add(DateTime.Parse(HolidayDate));
dates.Add(DateTime.Parse(endDate));
List<DateTime> orderedDates = dates.OrderBy(d => d).ToList();
for (int i = 0; i < orderedDates.Count; i++ )
//if (ModelState.IsValid)
{
db.Holidays.AddObject(holiday);
db.SaveChanges();
return View();
}
return RedirectToAction("Index");
// return View();
}
问题出现在我的列表假期中,我不知道如何从开始日期到结束日期运行循环,并为每个数据库添加一条新记录。
请告知
答案 0 :(得分:0)
我将举例说明从开始日期到结束日期的迭代,然后您可以将其插入到您的解决方案中:
DateTime startDate = Convert.ToDateTime("1/1/2012"),
endDate = Convert.ToDateTime("1/30/2012");
while (startDate < endDate)
{
// do something here with the date
startDate = startDate.AddDays(1);
}
现在,另外需要注意的一点是,您实际上可以将startDate
和endDate
作为DateTime
接收,因为ASP.NET会为您进行转换。如果其中一个可以为空,那么只需将其类型设置为DateTime?
。