DropDownListFor не отображает набор SelectedValue в ViewModel

Я использую DropDownListFor для отображения списка недель в записи. Если вы редактируете существующую запись, выбранная неделя отображается нормально.

Когда вы переходите к созданию новой записи, выбранное значение будет моим optionLabel. Я хочу выбрать первую неделю, у которой StartDate больше DateTime.Now.

Когда я применяю точку останова, правильный идентификатор устанавливается как SelectedValue в SelectList, но он не отображается в DropDownListFor, а также не является параметром «выбрано», когда я смотрю на инструменты разработчика. Любая помощь будет здорово.

Вид:

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

person BigBryon85    schedule 23.01.2018    source источник


Ответы (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);
}
person GGO    schedule 23.01.2018
comment
ЭТО БЫЛО! У меня были данные отчета, но они были такими... reportData = new tbl3PReports() ... вместо... reportData = new tbl3PReports() { WeekId = currentWeekOfId} - person BigBryon85; 23.01.2018