Как сопоставить TimeSpan с "чч: мм"? - PullRequest
0 голосов
/ 06 декабря 2018

Мой вопрос разветвлен на A и B.

В моей модели представления я определяю выбираемое время, которое должно быть передано раскрывающемуся представлению, например:

public List<string> SelectableTimes => new List<string>
{
    "00:00", "00:15", "00:30" //, ... and so on.
};

... и отображая их следующим образом:

<select asp-for="TimeFrom" 
    asp-items="@(new SelectList(Model.SelectableTimes, Model.TimeFrom))">
</select>

Свойство TimeFrom модели: TimeSpan:

public TimeSpan TimeFrom { get; set; }

Вопрос A) Как я могу выбрать правильное время в раскрывающемся списке?Первый вариант (00:00) всегда выбирается.

Если я изменю SelectableTimes, чтобы включить секунды, тем самым изменяя предпосылку вопроса A, например:

public List<string> SelectableTimes => new List<string>
{
    "00:00:00", "00:15:00", "00:30:00" //, ... and so on.
};

.... это работает, но я не хочу отображать секунды в выпадающем списке.

Вопрос B) Можно ли отформатировать секунды?Я попытался добавить .ToString(@"hh\:mm"), но все еще отображаются секунды:

<select asp-for="TimeFrom" 
    asp-items="@(new SelectList(Model.SelectableTimes, Model.TimeFrom.ToString(@"hh\:mm")))">
</select>

1 Ответ

0 голосов
/ 10 декабря 2018

Попробуйте решение ниже:

public class TimeVM
{
    public List<TimeSpanVM> SelectableTimes => new List<TimeSpanVM>()
                {
                       new TimeSpanVM{Value = new TimeSpan(0, 0, 0) , Label = new TimeSpan(0, 0, 0).ToString("hh\\:mm")},
                       new TimeSpanVM{Value = new TimeSpan(0, 15, 0) , Label = new TimeSpan(0, 15, 0).ToString("hh\\:mm")},
                       new TimeSpanVM{Value = new TimeSpan(0, 30, 0) , Label = new TimeSpan(0, 30, 0).ToString("hh\\:mm")}
                };

    public TimeSpan TimeFrom { get; set; } = new TimeSpan(0, 15, 0);

}

public class TimeSpanVM
{
    public TimeSpan Value { get; set; }
    public string Label { get; set; }
}

Просмотр:

<div class="row">
    <div class="col-md-4">
        <form asp-action="CreateTimeVM">
            <select asp-for="TimeFrom"
                    asp-items="@(new SelectList(Model.SelectableTimes,"Value", "Label" , Model.TimeFrom))"></select>   

            <div class="form-group">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </form>
    </div>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...