将默认选项添加到SelectList - MVC3 C#

时间:2013-10-24 15:01:18

标签: c# asp.net-mvc-3

我需要在我的选择列表中添加一个选项,例如:

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

6 个答案:

答案 0 :(得分:6)

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

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

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

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

答案 1 :(得分:3)

您可以使用{/ 1}}方法,例如

Insert

在循环

之前添加默认 buildingClubList.Insert(0, new SelectListItem { Value = "", Text = "Select an Option Below" });

答案 2 :(得分:0)

只需添加一个

buildingClubList.Add(new SelectListItem
{
    Value = "",
    Text = "Select an Option Below"
});
在你的foreach循环之前

答案 3 :(得分:0)

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

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

        });

在他们选择了某些内容之后,你会想要确认它当然不是这个选项

答案 4 :(得分:0)

对于未来的用户(我知道这是旧的,但我在寻找解决方案时遇到了它),如果你有一个具有单个选定值的现有SelectList,那么这个帮助器将为你提供Add和Prepend方法: - < / p>

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

答案 5 :(得分:0)

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

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