将默认选项附加到选择列表 - 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;
}
无需
在集合中添加默认值,您可以直接在视图中执行此操作:
@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 }
);