我的问题分为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>
答案 0 :(得分:0)
请尝试以下解决方案:
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>