1

我正在 MVC 应用程序中构建一个页面,该页面包含一个下拉框,允许用户从多个财务周期中选择一个。

为了让我们的用户更清楚,我想将“(当前)”附加到当前财务期的选项,并可能将“(最新)”附加到上一期以表示最后一个完整期间。我们已经可以确定我们处于哪个财务期,以及随后的上一个财务期,依此类推。

因此,假设我希望附加到的两个选项当前如下所示:

  • 第 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 回答