Timespan в приложении asp.net mvc - PullRequest
2 голосов
/ 27 июня 2011

Я пишу приложение asp.net mvc.в C #, и мне интересно, если кто-нибудь может помочь мне понять, если можно отобразить время как 8:00 (без секунд) в форме в раскрывающемся списке вместо 8:00:00.Спасибо за вашу помощь!

Прямо сейчас у меня есть код в моем timehepler.cs:

public static List<TimeSpan> TimeSpansInRange(TimeSpan start, TimeSpan end, TimeSpan interval)
        {
            List<TimeSpan> timeSpans = new List<TimeSpan>();
            while (start.Add(interval) <= end)
            {
                timeSpans.Add(start);
                start = start.Add(interval);
            }
            return timeSpans;
        }

        public static List<TimeSpan> PossibleTimeSpansInDay()
        {
            return TimeSpansInRange(new TimeSpan(8, 0, 0), new TimeSpan(22, 30, 0), new TimeSpan(0, 30, 0));
        }

Ответы [ 2 ]

1 голос
/ 27 июня 2011

Вы должны изменить тип списка на String, а затем при добавлении конвертировать его в требуемый формат, к сожалению, альтернативы ему нет, кроме преобразования результата в строку, насколько я знаю ....

   public static List<string> TimeSpansInRange(TimeSpan start, TimeSpan end, TimeSpan interval)
    {
        List<string> timeSpans = new List<string>();
        while (start.Add(interval) <= end)
        {
            timeSpans.Add(start.Hours.ToString() +":"+start.Minutes.ToString());
            start = start.Add(interval);
        }
        return timeSpans;
    }
1 голос
/ 27 июня 2011

Вы не можете просто использовать ToString, как это делает элемент управления.

Вместо этого преобразуйте его в строку самостоятельно с помощью

public static class TimeSpanExtensions
{
   private static string ConvertTimeSpanToString (this TimeSpan myTimeSpan)
   {
      return (int) myTimeSpan.TotalHours + ":" + myTimeSpan.Minutes.ToString("00");
   }
}

Вы назовете это так:

<%= Html.DropDownList("Start", Model.Request.StartTimes.Select(TimeSpanExtensions.ConvertTimeSpanToString) %> 
<%= Html.DropDownList("End", Model.Request.EndTimes.Select(TimeSpanExtensions.ConvertTimeSpanToString) %>

В .net 4 вы могли бы просто использовать строку формата в вашем списке. myTimeSpan.ToString ("HH:mm"); при отображении времени.

...