【发布时间】:2016-11-15 20:04:43
【问题描述】:
我在让所选值适用于 DropDownListFor 时遇到一些问题。
DropDownListFor 填充了时间列表:
// creates list of times for visit times select list
DateTime DateToday = DateTime.Today;
DateTime DateTimeStart = new DateTime(DateToday.Year, DateToday.Month, DateToday.Day, 8, 30, 0);
DateTime DateTimeEnd = new DateTime(DateToday.Year, DateToday.Month, DateToday.Day, 18, 0, 0);
List<SelectListItem> TimeFrom = new List<SelectListItem>();
while (DateTimeStart.TimeOfDay != DateTimeEnd.TimeOfDay)
{
DateTimeStart = DateTimeStart.AddMinutes(30);
TimeFrom.Add(new SelectListItem()
{
Selected = (DateTimeStart.TimeOfDay.ToString() == ViewBag.VbVisitTime),
Text = DateTimeStart.ToString("HH:mm tt"),
Value = DateTimeStart.TimeOfDay.ToString()
});
}
model.TimeFromList = new SelectList(TimeFrom, "Value", "Text");
查看
@Html.DropDownListFor(model => model.VisitDetails.VisitDateTime, Model.TimeFromList, "Select Time...", new { @class = "form-control" })
当时间 = ViewBag.VbVisitTime 时设置所选值,当我调试 ViewBag.VbVisitTime 的值确实等于下拉列表中的值并且我还在屏幕上显示了 ViewBag.VbVisitTime 的值并匹配下拉列表中的值,因此不确定它为什么不选择该值。
【问题讨论】:
-
也许
model.VisitDetails.VisitDateTime优先于Selected = (DateTimeStart.TimeOfDay.ToString() == ViewBag.VbVisitTime)作为所选值。 -
设置
SelectListItem的Selected属性被DropDownListFor()方法忽略。模型绑定通过绑定到您的属性的值来工作。您需要设置VisitDateTime的值以匹配其中一个选项值,然后该选项将被选中。 -
感谢您的cmets帮我解决了这个问题,我会回答下面的问题。
标签: c# asp.net-mvc