1

ユーザーが休日のページに移動すると、2 つのことのうちの 1 つを行うことができます。

1)ドロップダウンボックスを使用して「個人名」を選択し、「表示」をクリックすると、この個人の現在のすべての休日が表示されます

2) [新規作成] をクリックすると、ユーザーは新しい休日を追加できる作成ページに移動します (ここから、ドロップから個人名を選択し、カレンダーから日付を選択します)。

これはすべて機能しますが、ユーザーが最初に人の名前を選択して表示をクリックするという最初のパスをたどった場合 (休日が表示されます)、パス 2 を選択して「作成」をクリックすると、作成ページにジャンプします。ただし、ドロップ ダウン ボックスは [選択] に戻ります。前のドロップ ダウンから選択した既存の人をこのドロップ ダウンに表示したいと思います。

Cookie または URL/パラメータ?

とにかく私は立ち往生してください助けてください

クッキーを食べてみました。

[code]
[HttpGet]
        public ViewResult Index(string sortOrder, int? currentPersonID)
        {
            var holidays = db.Holidays.Include("Person");
            HolidayList model = new HolidayList();

            if (currentPersonID.HasValue)
            {
                model.currentPersonID = currentPersonID.Value;

            }
            else
            {
                model.currentPersonID = 0;
            }

            model.PList4DD = db.People.ToList();

            //hyperlink to sort dates in ascending order
            ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "date" : "";
            var dates = from d in db.Holidays
                        where d.PersonId == currentPersonID.Value    
                        select d;

            switch (sortOrder)
            {
                case "date":
                    dates = dates.OrderBy(p => p.HolidayDate);
                    break;
            }

            model.HList4DD = dates.ToList();

            var cookie = new HttpCookie("cookie_name", "currentPersonID");
            Response.AppendCookie(cookie);     

            return View(model);
        }

    public ActionResult Create()
        {
            var cookie = Request.Cookies["cookie_name"];
            if (cookie != null)
            {
                string value = cookie.Value;
                //int? value = cookie.Value;
            }

            ViewBag.cookie = cookie.Value;

            ViewBag.Id = new SelectList(db.People, "Id", "Name");
            return View();
        } 

// index の currentPersonID を int として使用しようとしましたが、許可されません。

[/code]
My View
[code]
@model HolidayBookingApp.Models.startANDend


@{
    ViewBag.Title = "Create";
}

<p>


  <span>@ViewBag.cookie</span>


<h2>Create</h2>

<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>

//        Date.format = 'dd/m/yyy';
        $("#HolidayDate").addClass('date-pick');
        $("#endDate").addClass('date-pick');
            //$('.date-pick').datePicker//({dateFormat: 'dd-mm-yy'}).val();

//        clickInput: true

        $(function () {
            //3 methods below dont allow user to select weekends
            $('.date-pick').datePicker(
               {
                   createButton: false,
                   renderCallback: function ($td, thisDate, month, year) {
                       if (thisDate.isWeekend()) {
                           $td.addClass('weekend');
                           $td.addClass('disabled');
                       }

                   }
               }
        )

        .bind('click',
            function () {
                $(this).dpDisplay();
                this.blur();
                return false;
            }
        )

        .bind('dateSelected',
            function (e, selectedDate, $td) {
                console.log('You selected ' + selectedDate);
            }
        );

            //        HolidayDate is start date
            $('#HolidayDate').bind('dpClosed',
                    function (e, selectedDates) {
                        var d = selectedDates[0];
                        if (d) {
                            d = new Date(d);
                            $('#endDate').dpSetStartDate(d.addDays(0).asString());
                        }
                    }
            );

            //end date is end date
            $('#endDate').bind('dpClosed',
                    function (e, selectedDates) {
                        var d = selectedDates[0];
                        if (d) {
                            d = new Date(d);
                            $('#HolidayDate').dpSetEndDate(d.addDays(0).asString());
                        }
                    }
                );
        });



    </script>

     @Html.ValidationMessageFor(model => model.HolidayDate)
        </div>

        <p>
            <input type="submit" value="Create"/>
        </p>



    </fieldset>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

@*
<p>Current Person Selected is:

@TempData["currentPersonID"]

</p>*@
[code]

これを実行したら、値を保存するためにドロップダウンを取得するにはどうすればよいですか? 何か助けはありますか?

ありがとう

4

2 に答える 2

1

私にとって、Cookieは、多くの異なるページに情報を保存する方法であり、ユーザーがしばらくして戻ってきた場合にも役立ちます。

情報をあるページから別のページに渡す必要があるため、クエリ文字列を使用することをお勧めします。[作成]ボタンのクリックイベントでjavascriptまたはjqueryを使用して、ドロップダウンに値があるかどうかを確認し、クエリ文字列に入れてリダイレクトできます。

そして、私は以下を読むことをお勧めします:http: //www.codeproject.com/Articles/43457/Session-Cookie-Query-String-Cache-Variables-Unifie

于 2012-12-12T15:41:48.807 に答える
1

ヘルパー SelectList を使用して渡し、アイテムのリストと選択したアイテムの ID を含むモデルを表示してみてください。

@Html.DropDownList("name", new SelectList(Model.SomeList, "ItemValueId", "ItemDescription", Model.ItemValueId), new { @class = "someclass" })
于 2012-12-12T15:43:36.590 に答える