1

ユーザーがいくつかの会計期間から選択できるドロップダウンボックスを含むMVCアプリケーション内にページを作成しています。

ユーザーにとってより明確にするために、現在の会計期間であるオプションに「(現在)」を追加し、前の期間に「(最新)」を追加して、最後の全期間を表す可能性があります。現在の会計期間と、その後の会計期間などをすでに決定できます。

したがって、現在追加しようとしている2つのオプションが次のようになっているとしましょう。

  • ピリオド11
  • ピリオド12

そして、私は彼らに読んでもらいたい:

  • 期間 11 (最新)
  • 期間 12 (現在)

ドロップダウンはデータベースから取り込まれますが、このテキストをアプリケーション レベルで追加したいと思います。

これは可能なことですか?もしそうなら、どのように?私はそれについてどうやって行くかについて少し途方に暮れています。

事前に助けてくれてありがとう。

4

1 に答える 1

1

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);
}
于 2012-09-10T13:18:09.117 に答える