将默认选项附加到选择列表 - MVC3 C#

本文关键字:列表 MVC3 选择 默认 选项 | 更新日期: 2023-09-27 18:36:40

我需要在我的选择列表中附加一个选项,如下所示:

<option value="">Select an Option Below</option>

这是我生成选择列表的方法:

不确定在何处预置此选项。谢谢

public static IEnumerable<SelectListItem> GetBuildingClubs(List<BuildingClub> localClubs, List<BuildingClub> psfyClubs)
{
    var buildingClubList = new List<SelectListItem>();
    IEnumerable<BuildingClub> allBuildingClubs = localClubs.Union(psfyClubs);
    foreach (BuildingClub b in allBuildingClubs)
    {
        buildingClubList.Add(new SelectListItem
        {
            Value = b.MasterCustomerId,
            Text = b.NewBuildingClubName
        });
    }
    buildingClubList.OrderBy(c => c.Text);
    //Prepend the default option here???
    return buildingClubList;
}

将默认选项附加到选择列表 - MVC3 C#

无需

在集合中添加默认值,您可以直接在视图中执行此操作:

@Html.DropDownListFor(model => model.SelectedValue, Model.BuildingClubList, "Select an Option Below")

带有空白值项的"Select an Option Below"将显示在下拉列表中。

假设模型包含一个名为BuildingClubList的属性,该属性由 GetBuildingClubs 方法初始化。

您可以使用Insert方法,例如

 buildingClubList.Insert(0, new SelectListItem
    {
        Value = "",
        Text = "Select an Option Below"
    });

在循环之前添加默认SelectListItem

对于未来的用户(我知道这很旧,但我自己在寻找解决方案时遇到了它),如果您有一个具有单个选定值的现有 SelectList,那么此帮助程序将为您提供添加和预置方法:-

/// <summary>
/// A static helper class providing extension methods to SelectList instances
/// </summary>
public static class SelectListExtensions
{
    /// <summary>
    /// Adds the specified value to the select list.
    /// </summary>
    /// <param name="selectList">The select list.</param>
    /// <param name="value">The value.</param>
    /// <param name="text">The text.</param>
    /// <param name="selected">if set to <c>true</c> [selected].</param>
    /// <returns>The modified/rebuilt select list</returns>
    public static SelectList Add(this SelectList selectList, string value, string text, bool selected = false)
    {
        var itemList = selectList.ToList().FluentAdd(
            new SelectListItem { Value = value, Text = text, Selected = selected }
        );
        return new SelectList(itemList, "Value", "Text");
    }
    /// <summary>
    /// Prepends the specified value to the select list.
    /// </summary>
    /// <param name="selectList">The select list.</param>
    /// <param name="value">The value.</param>
    /// <param name="text">The text.</param>
    /// <param name="selected">if set to <c>true</c> [selected].</param>
    /// <returns>The modified/rebuilt select list</returns>
    public static SelectList Prepend(this SelectList selectList, string value, string text, bool selected = false)
    {
        var itemList = selectList.ToList();
        itemList.Insert(0, new SelectListItem { Value = value, Text = text, Selected = selected });
        return new SelectList(itemList, "Value", "Text", selectList.SelectedValue);
    }
}

只需添加一个

buildingClubList.Add(new SelectListItem
{
    Value = "",
    Text = "Select an Option Below"
});

在你的 foreach 循环之前。

在进入 foreach 循环之前,添加:

buildingClubList.Add(new SelectListItem
        {
            Value = "",
            Text = "Select an Option Below"
        });

在他们选择某些内容后,您需要验证它当然不是此选项

这是旧的,如果您想要"提示"选项,@RédaMattar的答案是最好/正确的,但我偶然发现了它,希望手动将有价值的选项添加到 SelectList(例如 - 允许客户端触发"新"操作的选项)这似乎是最干净的方式:

 selectList = selectList.Prepend(
                 new SelectListItem { Value = "New", Text = "New", Selected = false }
              );