Razor DropDownList用于不显示ViewModel中设置的SelectedValue

Razor DropDownList用于不显示ViewModel中设置的SelectedValue,razor,model-view-controller,dropdownlistfor,Razor,Model View Controller,Dropdownlistfor,我正在使用DropDownListFor来显示条目中的周列表。如果编辑现有条目,则所选周显示正常 当您要创建新条目时,所选值为myoptionLabel。我想选择StartDate大于日期时间的第一周。现在 当我应用断点时,正确的ID被设置为SelectList的SelectedValue,但它不会显示在DropDownList for中,当我查看开发人员工具时,也不会显示选项“selected”。任何帮助都会很好 视图: 控制器: int currentWeekOfId = selectabl

我正在使用
DropDownListFor
来显示条目中的周列表。如果编辑现有条目,则所选周显示正常

当您要创建新条目时,所选值为my
optionLabel
。我想选择StartDate大于
日期时间的第一周。现在

当我应用断点时,正确的ID被设置为SelectList的SelectedValue,但它不会显示在
DropDownList for
中,当我查看开发人员工具时,也不会显示选项“selected”。任何帮助都会很好

视图:

控制器:

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.WeekId
NULL
,因此帮助者在SelectList中使用
NULL
或空值获取第一项

您不应该使用
currentWeekOfId
初始化您的
模型.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);
}

就这样!我有报告数据,但我有它作为。。。reportData=新的TBL3Preport()…而不是。。。reportData=new tbl3preport(){WeekId=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);
}