ich eine enum
mit folgenden Erweiterungen haben:Enum Erweiterungen in allen Aufzählungen
public static class EnumExtension
{
public static SelectList ToSelectList(this Enum en)
{
var list = (from Enum d in Enum.GetValues(en.GetType())
select new SelectListItem { Value = d.ToString(("d")), Text = Enum.GetName(en.GetType(), d) }).ToList();
var selectedValue = (int) Enum.Parse(en.GetType(), Enum.GetName(en.GetType(), en));
return new SelectList(list, "Value", "Text", selectedValue);
}
}
Hier ist die enum
ich spreche:
public enum BillingInterval
{
Monthly = 1,
Quarterly = 2,
Yearly = 3
}
Mit diesem enum
und die Erweiterung es möglich ist, zu folgendes tun
public ActionResult Test()
{
var vm = new CustomerViewModel();
vm.BillingIntervalOptions = CustomerModel.BillingInterval.ToSelectList();
}
Und jetzt mein Modus l hat ein SelectList
enthält die Werte aus meiner enum
PROBLEM
Ich habe gerade einen anderen enum
gemacht, und ich würde annehmen, dass diese enum
würde die gleiche Ausdehnung haben, aber wenn ich versuche, die folgende, ich erhalten einen Compiler-Fehler:
public enum Status
{
Trial = 1,
Demo = 2,
Setup = 3,
Production = 4
}
public ActionResult Test()
{
var vm = new CustomerViewModel();
vm.BillingIntervalOptions = CustomerModel.BillingInterval.ToSelectList();
//This gives me a compile error
vm.StatusOptions = Status.ToSelectList();
}
'Status' does not contain a definition for 'ToSelectList'
ich bin nicht ganz sicher, warum einer meiner enums
die Erweiterungen b haben Aber das andere nicht.
Hinweis:das zweite Aufzählungs Status
ist nicht in der gleichen Datei wie die BillingInterval
Enum. Könnte das das Problem sein?