【问题标题】:run through startDate to endDate and add each record to DB运行 startDate 到 endDate 并将每条记录添加到数据库
【发布时间】:2012-11-27 21:14:24
【问题描述】:

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

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

请指教

【问题讨论】:

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


    【解决方案1】:

    我将为您提供一个从开始日期迭代到结束日期的示例,然后您可以将其插入到您的解决方案中:

    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?

    【讨论】:

    • 感谢 Michael 的回复。请参阅上面的回复...不会让我在此文本框中正确显示代码。再次感谢
    • 我认为这可能会陷入无限循环。据我了解 .AddDays 不会更改 DateTime 变量的值,它会返回一个新值。为了让它工作,你需要类似 startDate = startDate.AddDays(1);
    • @John,另一位社区成员指出我的代码中存在逻辑错误,请查看更新。
    猜你喜欢
    • 2020-02-22
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    相关资源
    最近更新 更多