DropDownList不显示ViewModel中设置的SelectedValue

时间:2018-01-23 14:50:20

标签: razor model-view-controller dropdownlistfor

我正在使用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);

1 个答案:

答案 0 :(得分:1)

您的问题是DropDownListFor首先获取model.reportData.WeekId值。 就像你正在创建一个新实体一样,我想reportData.WeekIdNULL,所以帮助者将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);
}