如何创建可重复使用的下拉列表

时间:2017-01-19 16:07:18

标签: c# asp.net-mvc html-select

我创建了一个非常简单的下拉列表,它基本上显示了不同的时间,它们的值是每次午夜过后的分钟。例如:

Value       Time
60          01:00 AM
75          01:15 PM
90          01:30 PM
105         01:45 PM
120         02:00 PM

问题是,我需要在我的应用程序中的一大堆视图和控制器中使用相同的下拉列表。在阅读了几篇文章后,似乎我需要为此创建一个静态类?但是所有的例子似乎都比我实际需要的更复杂。我应该为此创建一个IList吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试以下方法

  1. 创建一个为下拉列表生成数据源的静态类
  2. @Html.DropDownList("TimeList", DropdownData.GetTimeList("75"), new { @class = "form-control" })
    
    1. 在您的视图中,您可以使用在步骤1中生成的数据源创建下拉列表
    2. {{1}}

答案 1 :(得分:0)

如果您需要一个值Global,那么是的,您希望它在C#中为public static。我建议将其放在public static class中,以便您可以按名称访问它。

public static class MyData
{
     public static IEnumerable<DateTime> ValueTimes { get; set;} //(or IList or List<T> or whatever you want)     
}

public class IDoStuff
{
  public DateTime myTime { get; set; }
  public IDoStuff(DateTime d) //constructor
  {
     if(ValueTimes.IndexOf(d) != -1) //-1 says I no findie
        myTime = d;
     else
        throw new ApplicationException("That's not a valid time, dummy");
  }
}

看,轻松腻。此外,使用DateTimeTimeSpan,即使它们都在同一天。不要用strings来表示时间,你就是这么麻烦。

编辑:当我提出解决方案时,您发布了示例数据。鉴于此:

Value       Time
60          01:00 AM
75          01:15 PM
90          01:30 PM
105         01:45 PM
120         02:00 PM

我认为你实际上可以这样做并跳过静态变量:

public static Timespan GetTime(int value)
{
   return Timespan.FromMinutes(value);

}