2012-09-10 107 views
1

我在一個MVC應用程序中建立一個頁面,該頁面包含一個下拉框,允許用戶從多個財務期間中選擇一個。追加文本從數據庫中填充下拉選項

爲了使我們的用戶更清楚,我想在當前財務期間選項中添加「(當前)」,並且可能將「(最近)」添加到上一期間以表示最後一個期間整個期間。我們已經可以確定我們在哪個財政期間,以及之後的財政期間等等。

所以我們可以說這兩個選項我期待追加到目前這個樣子:

  • 期11
  • 期12

,我想它他們閱讀:

  • 週期11(最新)
  • 期12(銅rrent)

從數據庫中填充下拉列表,但我想在應用程序級別追加此文本。

這是可能的東西嗎?如果是這樣,怎麼樣?我對如何解決這個問題感到有點不知所措。

感謝您提前提供任何幫助。

+0

你總是知道期11是「最新」,這期間12是「當前?」還是那些動態值?如果是動態的,你是否總是知道這些字符串的格式爲「期間」+ ? –

+0

他們總是動態的,是的,他們總是在期間的格式。 – LiamGu

+0

看到我的編輯如下。 –

回答

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); 
} 
+0

對不起,也許我在我的問題上不是特別清楚。這些選項已經存在於下拉列表中,例如第11期和第12期。 我想附加到這些選項的顯示文本,以便它們讀取期間11(最新)和期間12(當前)。 – LiamGu

+0

哦。你是否一直知道第11期是「最新」,第12期是「當前?「 –

+0

不,這只是我的例子,它每個月都在變化,所以我們的下一個當前時期將會在我們的新年之內,因此第1期將成爲第1期(當前),第12期將到期第12期(最新)。 – LiamGu

相關問題