皆さん、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">
<form action ="/Holidays/Index" id="some" method="post">
@Html.DropDownListFor(model => model.HList4DD.First().HolidayDate, new SelectList(Model.PList4DD, "Id", "Name", Model.currentPersonID), "--select--")
<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);
</script>
<input type="submit" id= "sbmt" name="ViewHolidaysDD" value="View"/>
</form>
<script>
$('#sbmt').attr('disabled', '');
</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>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></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>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>"Index")
</div>
ここからどこに行けばよいかわからない場合は、Index View で注文をプルするパラメーターを作成するなどの方法がありますか?
みんなに感謝し、エッセイについて申し訳ありません