public static EnumModelBinder GetEnumModelBinder(this Enum value) { EnumModelBinder modelItem = new EnumModelBinder(); modelItem.Value = Convert.ToInt32(value); modelItem.Text = value.GetDisplayName(); return(modelItem); }
public void Should_fall_back_to_default_enum_value_if_value_does_not_exist_on_enum() { var modelBindingContext = new ModelBindingContext { ValueProvider = new NameValueCollectionValueProvider(new NameValueCollection { { "Foo", "Does not exist" } }, CultureInfo.InvariantCulture), ModelName = "Foo", }; var value = new EnumModelBinder<Foo>().BindModel(new ControllerContext(), modelBindingContext); Assert.That(value, Is.EqualTo(Foo.None)); }
public void Should_bind_enum_value_by_name() { var collection = new NameValueCollection { { "Foo", "Bar" } }; var modelBindingContext = new ModelBindingContext { ValueProvider = new NameValueCollectionValueProvider(collection, CultureInfo.InvariantCulture), ModelName = "Foo", }; var value = new EnumModelBinder<Foo>().BindModel(new ControllerContext(), modelBindingContext); Assert.That(value, Is.EqualTo(Foo.Bar)); }
public void String_Ok() { var provider = new ValueProvider() { Parameters = { new Parameter("code", "Forbidden") } }; var context = new ModelBinderContext(typeof(HttpStatusCode), "code", "", provider); var binder = new EnumModelBinder(); var actual = (HttpStatusCode)binder.Bind(context); Assert.Equal(HttpStatusCode.Forbidden, actual); }
public void Number_Ok() { var provider = new ValueProvider() { Parameters = { new Parameter("code", "404") } }; var context = new ModelBinderContext(typeof(HttpStatusCode), "code", "", provider); var binder = new EnumModelBinder(); var actual = (HttpStatusCode)binder.Bind(context); Assert.Equal(HttpStatusCode.NotFound, actual); }
public static List <EnumModelBinder> GetEnumBinderList <T>(params T[] enums) where T : struct { var enumType = typeof(T); if (!enumType.IsEnum) { throw new ArgumentException(); } List <EnumModelBinder> result = new List <EnumModelBinder>(); if (enums == null) { return(result); } foreach (T item in enums) { EnumModelBinder modelItem = new EnumModelBinder(); modelItem.Value = Convert.ToInt32(item); modelItem.Text = (item as Enum).GetDisplayName(); result.Add(modelItem); } return(result.ToList()); }