运行startDate到endDate并将每条记录添加到DB

时间:2012-12-10 12:48:16

标签: c# asp.net-mvc-3 datetime datepicker

所以我使用的是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();
        }

问题出现在我的列表假期中,我不知道如何从开始日期到结束日期运行循环,并为每个数据库添加一条新记录。

请告知

1 个答案:

答案 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);
}

现在,另外需要注意的一点是,您实际上可以将startDateendDate作为DateTime接收,因为ASP.NET会为您进行转换。如果其中一个可以为空,那么只需将其类型设置为DateTime?