3

だから私はJQuery.datePickerの例を使用しています... http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerStartEnd.html

Jquery カレンダーは正常に機能していましたが、一度に 1 つの日付を入力して DB に保存することしかできませんでした。

ユーザーが開始日と複数の日付を選択し、日付と毎日をループして DB に実行するようにします。

その瞬間に少し迷子になりました。助けていただければ幸いです....

これは、ユーザーが新しい日を追加できるようにする 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();
        }

私のリストの休日に問題があります。開始日から終了日までループを実行し、それぞれのデータベースに新しいレコードを追加する方法がわかりません。

お知らせ下さい

4

1 に答える 1

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

ここで、もう1つ注意すべき点は、 ASP.NETが変換を行うため、実際にstartDateendDateを受け取ることができるということです。DateTimeそれらの1つがnull許容の場合は、その型をに設定するだけDateTime?です。

于 2012-12-10T13:02:32.073 に答える