DropDownListFor 不显示ViewModel中设置的SelectedValue

DropDownListFor not displaying the SelectedValue set in the ViewModel

我正在使用 DropDownListFor 来显示条目中的周列表。如果您编辑现有条目,Week selected 显示得很好。

当你去创建一个新条目时,selected 值是我的optionLabel。我想 select 开始日期大于 DateTime.Now 的第一周。

当我应用断点时,正确的 ID 设置为 SelectList 的 SelectedValue,但它没有显示在 DropDownListFor 中,当我查看时 "selected" 选项也不显示开发者工具。任何帮助都会很棒。

查看:

@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);

您的问题是 DropDownListFor 首先获取您的 model.reportData.WeekId 值。 就像您正在创建一个新实体一样,我想 reportData.WeekIdNULL,因此助手将 SelectList 中的第一项设为 NULL 或空值。

你应该初始化你的新实体模型,而不是用 currentWeekOfId 初始化你的 Model.weeksList,像这样:

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);
}