コード例 #1
0
        public static EnumModelBinder GetEnumModelBinder(this Enum value)
        {
            EnumModelBinder modelItem = new EnumModelBinder();

            modelItem.Value = Convert.ToInt32(value);
            modelItem.Text  = value.GetDisplayName();
            return(modelItem);
        }
コード例 #2
0
ファイル: EnumBinderTests.cs プロジェクト: tmont/portoa
        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));
        }
コード例 #3
0
ファイル: EnumBinderTests.cs プロジェクト: tmont/portoa
        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));
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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());
        }