我正在使用DropDownListFor
在条目中显示Weeks列表。如果您编辑现有条目,则选择的周显示就好了。
当您创建新条目时,所选值为optionLabel
。我想选择StartDate大于DateTime.Now
的第一周。
当我应用断点时,正确的ID被设置为SelectList的SelectedValue,但它不会显示在DropDownListFor
中,当我查看Developer Tools时,选项也不会被选中。任何帮助都会很棒。
查看:
@Html.DropDownListFor(model => model.reportData.WeekId, Model.weeksList, "-- Select Week Of --", htmlAttributes: new { @class = "form-control" })
控制器:
int currentWeekOfId = selectableWeeksList.Where(w => w.WeekStartDate > DateTime.Now).Select(s => s.Id).FirstOrDefault();
_3PViewModel vm = new _3PViewModel()
{
weeksList = new SelectList(selectableWeeksList, "Id", "FullWeek", currentWeekOfId)
};
return PartialView(vm);
答案 0 :(得分:1)
您的问题是DropDownListFor
首先获取model.reportData.WeekId
值。
就像你正在创建一个新实体一样,我想reportData.WeekId
是NULL
,所以帮助者将SelectList中的第一项用NULL
或空值。
不应使用Model.weeksList
初始化currentWeekOfId
,而应启动新的实体模型,类似:
public Action Create() {
int currentWeekOfId = selectableWeeksList.Where(w => w.WeekStartDate > DateTime.Now).Select(s => s.Id).FirstOrDefault();
_3PViewModel vm = new _3PViewModel()
{
weeksList = new SelectList(selectableWeeksList, "Id", "FullWeek"),
reportData = nezw ReportData() { WeekId = currentWeekOfId }
}
return PartialView(vm);
}