したがって、私のアプリケーションでは、ユーザーはドロップダウン リストから名前を選択し、[表示] をクリックすると、対応する値がページに表示されます。
次に、ハイパーリンクを使用して、リストを昇順に並べ替えます。これを行うには、ページが更新され、リストの新しい順序が表示されます。
ドロップダウン リストの値は、選択された人物の名前のままではなく、元の値の 'select' に戻ります。
私のモデル:
public class HolidayList
{
public List<Holiday> HList4DD { get; set; }
public List<Person> PList4DD { get; set; }
public int currentPersonID { get; set; }
public IEnumerable<SelectListItem> Categories { get; set; }
public HolidayList()
{
HList4DD = new List<Holiday>();
PList4DD = new List<Person>();
}
}
}
私のコントローラー:
[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);
}
私の見解
ここでさまざまな試みを試みましたが、次のコードは機能しましたが、ドロップリストの問題があります
@Html.DropDownListFor(model => model.HList4DD.First().HolidayDate,
new SelectList(Model.PList4DD, "Id", "Name"),
// Model.currentPersonID
"---Select---"
) *@
これを解決するための私の試みは次のとおりです。
@Html.DropDownList("HolidayDate", Model.Categories, "---Select---")
@Html.DropDownListFor("HolidayDate", x => x.HolidayDate, Model.Categories)
どんな助けでも大歓迎です