IEnumerable
ドロップダウンの項目にデータを入力するために、モデル/ビューモデルクラスで何らかの使用をしていると仮定します。このリストを作成するときは、モデルをビューに戻す前に、「(現在)」および「(最新)」オプションを追加するだけです。次FinancialPeriod
のようなモデル/ビューモデルクラスの場合:
public class FinancialPeriod{
public int FinancialPeriodId { get; set; }
public string DisplayText { get; set; }
}
次に、データベースから取得したすべての会計期間のリストがモデルの次のプロパティであると想定して、コントローラーでこれを行うことができますFinancialPeriods
。
public ActionResult Index(){
var model = GetTheModel();
model.FinancialPeriods.Add(new FinancialPeriod{
FinancialPeriodId = <something>,
DisplayText = "(Current)"
};
model.FinancialPeriods.Add(new FinancialPeriod{
FinancialPeriodId = <somethingElse>
DisplayText = "(Latest)"
};
return View(model);
}
<something>
値をに置き換え<somethingElse>
て、モデルがコントローラーにポストバックされたときに正しく解釈できることを確認してください。
編集-コメントと編集に基づいて、次のようなものがより適切です:
public ActionResult Index(){
var model = GetTheModel();
var currentMonth = DateTime.Now.Month;
var previousMonth = currentMonth - 1;
if (previousMonth == 0)
previousMonth = 12;
var currentPeriod = "Period " + currentMonth.ToString();
var latestPeriod = "Period " + previousMonth.ToString();
var newList = new List<FinancialPeriod>();
foreach(var period in model.FinancialPeriods){
if(period.DisplayText == currentPeriod)
{
newList.Add(new FinancialPeriod
{
FinancialPeriodId = period.FinancialPeriodId,
DisplayText = period.DisplayText + " (Current)"
};
continue;
}
if(period.DisplayText == latestPeriod)
{
newList.Add(new FinancialPeriod
{
FinancialPeriodId = period.FinancialPeriodId,
DisplayText = period.DisplayText + " (Latest)"
};
continue;
}
newList.Add(period);
}
model.FinancialPeriods = newList;
return View(model);
}