0

皆さん、MVC3 の知識を増やすために一緒にプロジェクトを立ち上げようとしていますが、壁にぶつかりました...

したがって、インデックス「ビュー」内の HolidaysController から、ユーザーを「create3」ActionResult にナビゲートするハイパーリンクを作成しました。

@Html.ActionLink("3 つの日付を選択", "Create3")

私の create3 ページでは、ユーザーに 3 つの日付をテキスト ボックスに入力してもらい、[作成] をクリックすると、ユーザーは前の HolidaysController/Index ページに戻り、そこで日付が昇順で表示されます。

....ATM ユーザーが 3 つの日付を入力して [作成] をクリックするまで、これを実行しています...しかし、注文を表示するメッセージ ボックスを表示する方法しか知りません。インデックスページから表示されます。

私のコードを見てください:

HolidayController/Index のコード:

 //submit will go to post
        [HttpPost]
        public ViewResult Index(int HolidayDate)
        {
            var holidays = db.Holidays.Include("Person");

            HolidayList model = new HolidayList();

            model.currentPersonID = HolidayDate;
            model.PList4DD = db.People.ToList();           
            model.Categories = holidays.Select(x => new SelectListItem
                                            {
                                                Value = x.Id.ToString(),
                                                Text = x.Person.Name
                                            }
                                          );


            int data = HolidayDate;

            model.HList4DD = db.Holidays.Where(h => h.PersonId == HolidayDate).ToList();      

            return View(model);

        }

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

            HolidayList model = new HolidayList();

            //not null
            if (currentPersonID.HasValue)
            {
                model.currentPersonID = currentPersonID.Value;

            }
            else
            {
                model.currentPersonID = 0;
            }

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

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

            return View(model);
        }

//View for Index

@*@model IEnumerable<HolidayBookingApp.Models.Holiday>*@
@model HolidayBookingApp.Models.HolidayList
@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>

<p>
@Html.ActionLink("Select 3 Dates", "Create3")
</p>

<table>
    <tr>
        <th>
            PersonId
        </th>
        <th>
            @*HolidayDate*@
            @Html.ActionLink("HolidayDate", "Index", new { sortOrder = ViewBag.NameSortParm, currentPersonID = Model.currentPersonID })
        </th>
        <th></th>
    </tr>
    <tr>  
    </tr>

@foreach (var item in Model.HList4DD)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.PersonId)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.HolidayDate)

        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id = item.Id }) |
            @Html.ActionLink("Details", "Details", new { id = item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id = item.Id })
        </td>
    </tr>}

    <tr>
      <div class="editor-label">
         @*   @Html.LabelFor(model => model.PList4DD, "Person")*@
        </div>

        <div class="editor-field">           
             &lt;form action ="/Holidays/Index" id="some" method="post"> 

  @Html.DropDownListFor(model => model.HList4DD.First().HolidayDate, new SelectList(Model.PList4DD, "Id", "Name", Model.currentPersonID), "--select--")    
       &lt;script>
           function updateFormEnabled() 
           {
               if (verifyAdSettings()) 
               {
                   $('#sbmt').removeAttr('disabled');
               }
               else 
               {
                   $('#sbmt').attr('disabled', 'disabled');
               }
           }

           function verifyAdSettings() 
           {
               if ($('#HolidayDate').val() != '') 
               {
                   return true;
               }
               else 
               {
                   return false;
               }
           }

           $('#HolidayDate').change(updateFormEnabled);

           &lt;/script>

             &lt;input type="submit" id= "sbmt" name="ViewHolidaysDD" value="View"/>
              &lt;/form>
  &lt;script>
      $('#sbmt').attr('disabled', '');
        &lt;/script>

        </div>

</table>

<br />
<br />
<table>
    <div>
    Judging by your selection the order of dates are: //HERE IS WHERE I WANT TO DISPLAY THE ORDER OF DATES
    </div>

</table>

すぐ上に、日付を昇順で表示したい場所があります

//my create 3 Action result


 [HttpGet]
        public ActionResult Create3()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Create3(string date1, string date2, string date3)
        {
            string FirstDateOrder, SecondDateOrder, ThirdDateOrder;

            //date 1 is biggest
            if (date1.Length > date2.Length && date1.Length > date3.Length)
            {
                //date 2 is 2nd & date 3 is 3rd
                if (date2.Length > date3.Length)
                {
                    FirstDateOrder = date1;
                    SecondDateOrder = date2;
                    ThirdDateOrder = date3;

                    System.Windows.Forms.MessageBox.Show("Order is 1, 2, 3");

                    return RedirectToAction("Index");
                }

                //date 3 is 2nd & date 2 is 3rd
                else
                {
                    FirstDateOrder = date1;
                    SecondDateOrder = date3;
                    ThirdDateOrder = date2;

                    System.Windows.Forms.MessageBox.Show("Order is 1, 3, 2");

                    return RedirectToAction("Index");
                }

            }

            //date 2 is biggest
            if (date2.Length > date1.Length && date2.Length > date3.Length)
            {
                //date 1 is 2nd & date 3 is 3rd
                if (date1.Length > date3.Length)
                {
                    FirstDateOrder = date2;
                    SecondDateOrder = date1;
                    ThirdDateOrder = date3;

                    System.Windows.Forms.MessageBox.Show("Order is 2, 1, 3");

                    return RedirectToAction("Index");
                }

                //date 3 is 2nd & date 1 is 3rd
                else
                {
                    FirstDateOrder = date2;
                    SecondDateOrder = date3;
                    ThirdDateOrder = date1;

                    System.Windows.Forms.MessageBox.Show("Order is 2, 3, 1");

                    return RedirectToAction("Index");
                }

            }

            //date 3 is biggest
            if (date3.Length > date1.Length && date3.Length > date2.Length)
            {
                //date 1 is 2nd & date 2 is 3rd
                if (date1.Length > date2.Length)
                {
                    FirstDateOrder = date3;
                    SecondDateOrder = date1;
                    ThirdDateOrder = date2;

                    System.Windows.Forms.MessageBox.Show("Order is 3, 1, 2");

                    return RedirectToAction("Index");
                }

                //date 2 is 2nd & date 1 is 3rd
                else
                {
                    FirstDateOrder = date3;
                    SecondDateOrder = date2;
                    ThirdDateOrder = date1;

                    System.Windows.Forms.MessageBox.Show("Order is 3, 2, 1");

                    return RedirectToAction("Index");
                }

            }


            return RedirectToAction("Index");

}

and my view:

    @model HolidayBookingApp.Models.Dates

@{
    ViewBag.Title = "Create3";
}

<h2>Create3</h2>

&lt;script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript">&lt;/script>
&lt;script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript">&lt;/script>

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Dates</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.date1)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.date1)
            @Html.ValidationMessageFor(model => model.date1)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.date2)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.date2)
            @Html.ValidationMessageFor(model => model.date2)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.date3)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.date3)
            @Html.ValidationMessageFor(model => model.date3)
        </div>

        <p>
            &lt;input type="submit" value="Create" />
        </p>
    </fieldset>
}

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


</div>

ここからどこに行けばよいかわからない場合は、Index View で注文をプルするパラメーターを作成するなどの方法がありますか?

みんなに感謝し、エッセイについて申し訳ありません

4

1 に答える 1

1

これを行うためのより洗練された方法は他にもありますが、おそらく最も簡単なのは ViewBag を使用することです。それよりも:

System.Windows.Forms.MessageBox.Show("Order is 3, 1, 2");

次のようなことを試してください:

ViewBag.DateOrder = "Order is 3, 1, 2";

次に、ビューに次のように入力します。

<span>@ViewBag.DateOrder</span>
于 2012-12-07T22:15:25.947 に答える