Ok, j'aime le code propre donc j'ai fait de cette méthode une extension.
static public class SelectListHelper
{
static public SelectList Add(this SelectList list, string text, string value = "", ListPosition listPosition = ListPosition.First)
{
if (string.IsNullOrEmpty(value))
{
value = text;
}
var listItems = list.ToList();
var lp = (int)listPosition;
switch (lp)
{
case -1:
lp = list.Count();
break;
case -2:
lp = list.Count() / 2;
break;
case -3:
var random = new Random();
lp = random.Next(0, list.Count());
break;
}
listItems.Insert(lp, new SelectListItem { Value = value, Text = text });
list = new SelectList(listItems, "Value", "Text");
return list;
}
public enum ListPosition
{
First = 0,
Last = -1,
Middle = -2,
Random = -3
}
}
Utilisation (par exemple) :
var model = new VmRoutePicker
{
Routes =
new SelectList(_dataSource.Routes.Select(r => r.RouteID).Distinct())
};
model.Routes = model.Routes.Add("All", "All", SelectListHelper.ListPosition.Random);
//or
model.Routes = model.Routes.Add("All");
2 votes
SelectList
semble n'être qu'une aide pour lier les données directement aux éléments. Si vous ajoutez des éléments manuellement, utilisezList<SelectListItem>
à la place.0 votes
Compte tenu de la réponse acceptée et du nombre de votes, puis-je vous suggérer de modifier légèrement la question pour refléter cette réponse, c'est-à-dire "Comment puis-je ajouter un élément de valeur vide à une SelectList en ASP.net MVC" ? Mais le crédit et les remerciements vont à @h-dog pour avoir répondu à la question originale "Comment puis-je ajouter un élément" en soi.