代码之家  ›  专栏  ›  技术社区  ›  Stian

如何获取默认情况下要选择的值为0的SelectListItem之外的其他项?

  •  0
  • Stian  · 技术社区  · 6 年前

    我有一个 <select> 对于viewcomponent default.cshtml中的工作日,每天的关联值为0-6(星期日到星期六)。但是,我希望星期一列为第一天,因此在我的ViewModel中,我有:

    public List<SelectListItem> SelectableWeekdays => new List<SelectListItem>
    {
        new SelectListItem { Text = "Monday", Value = "1", Selected = true },
        new SelectListItem { Text = "Tuesday", Value = "2", Selected = false },
        new SelectListItem { Text = "Wednesday", Value = "3", Selected = false },
        new SelectListItem { Text = "Thursday", Value = "4", Selected = false },
        new SelectListItem { Text = "Friday", Value = "5", Selected = false },
        new SelectListItem { Text = "Saturday", Value = "6", Selected = false },
        new SelectListItem { Text = "Sunday", Value = "0", Selected = false }
    };
    

    在我的视图中,我呈现的下拉列表如下:

    <select asp-for="Weekday" class="form-control" asp-items="@Model.SelectableWeekdays">
    </select>
    

    我还尝试手动添加选定的禁用选项:

    <select asp-for="Weekday" class="form-control" asp-items="@Model.SelectableWeekdays">
        <option selected disabled>Please choose</option>
    </select>
    

    无论我尝试什么,所选选项始终是具有属性的“星期日” selected="selected" 为那天做准备。

    我也试过增加

    new SelectListItem { Text = "Please choose", Value = "99", Selected = true, Disabled = true },
    

    在视图模型中,省略了视图中的手动选项,但这也不起作用。禁用的“请选择”-选项在列表的顶部,但星期日仍然是选定的选项。

    1 回复  |  直到 6 年前
        1
  •  2
  •   JuanR    6 年前

    我认为问题在于基础模型的属性的价值 Weekday .

    如果将此属性的值设置为默认情况下要选择的选项( 1 在这种情况下),将相应地呈现控件。