【问题标题】:MVC DropDownListFor selected value not being selectedMVC DropDownListFor 选定的值未被选中
【发布时间】: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) 作为所选值。
  • 设置SelectListItemSelected 属性被DropDownListFor() 方法忽略。模型绑定通过绑定到您的属性的值来工作。您需要设置 VisitDateTime 的值以匹配其中一个选项值,然后该选项将被选中。
  • 感谢您的cmets帮我解决了这个问题,我会回答下面的问题。

标签: c# asp.net-mvc


【解决方案1】:

上面的 cmets 帮助我回答了我自己的问题,所以我想我只是发布它以防它帮助其他人。

SelectListItemSelected 属性确实被忽略了,因此我在模型中创建了一个新属性。

public TimeSpan? VisitTimeFrom { get; set; }

然后在我的控制器中设置 this 的值

DateTime? visitTime = model.VisitDetails.VisitDate;
model.VisitDetails.VisitTimeFrom = visitTime.Value.TimeOfDay;

然后下拉列表自动为我选择了正确的值

@Html.DropDownListFor(model => model.VisitDetails.VisitTimeFrom, Model.TimeFromList, "Select Time...", new { @class = "form-control" })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    相关资源
    最近更新 更多