powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Расширение стандартного MVC биндера
93 сообщений из 93, показаны все 4 страниц
Расширение стандартного MVC биндера
    #38321624
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень не хватает возможности программировать биндеры и вешать атрибутом на проперти. Найдено вот такое решение:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
    public class MyDefaultModelBinder : System.Web.Mvc.DefaultModelBinder
    {
        protected override void BindProperty(
            ControllerContext controllerContext, 
            ModelBindingContext bindingContext, 
            PropertyDescriptor propertyDescriptor)
        {
            var propertyBinderAttribute = TryFindPropertyBinderAttribute(propertyDescriptor);
            if (propertyBinderAttribute != null)
            {
                var binder = CreateBinder(propertyBinderAttribute);
                var value = binder.BindModel(controllerContext, bindingContext, propertyDescriptor);
                propertyDescriptor.SetValue(bindingContext.Model, value);
            }
            else
            {
                base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
            }
        }

        IPropertyBinder CreateBinder(PropertyBinderAttribute propertyBinderAttribute)
        {
            return (IPropertyBinder)DependencyResolver.Current.GetService(propertyBinderAttribute.BinderType);
        }

        PropertyBinderAttribute TryFindPropertyBinderAttribute(PropertyDescriptor propertyDescriptor)
        {
            return propertyDescriptor.Attributes
              .OfType<PropertyBinderAttribute>()
              .FirstOrDefault();
        }
    }

    interface IPropertyBinder
    {
        object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext, MemberDescriptor memberDescriptor);
    }

    public class PropertyBinderAttribute : Attribute
    {
        public PropertyBinderAttribute(Type binderType)
        {
            BinderType = binderType;
        }

        public Type BinderType { get; private set; }
    }



пример использования:

Код: c#
1.
2.
3.
4.
5.
    public class MyModel
    {
        [PropertyBinder(typeof(MyEnumFlagsBinder))] // class MyBider: IPropertyBinder
        public MyFlagsEnum EnumFlags { get; set; }
    }



решение неплохое и работает. и DI поддерживает. красотень. не хотите покритиковать?
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321717
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttОчень не хватает возможности программировать биндеры и вешать атрибутом на проперти.
Особых сложностей не испытываю.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321733
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

а по существу? как вот это забиндешь:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
[Flags]
enum MyEnum {

   [Display(AutoGenerateField = false)]
   None = 0,
   
   [Display(Name = "The Option 1")]
   Option1 = 1 << 0,
   [Display(Name = "The Option 2")]
   Option2 = 1 << 1,
   [Display(Name = "The Option 3")]
   Option3 = 1 << 2

}
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321760
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321767
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

мдяааа... я сомневаюсь, что на твоём ресурсе найдется рецептик по работе с енумом с флагами — принципиальная разница в том, что рендерится не дропдаун там или радиобатоны, а мультиселектлист/чекбокслист, ну или что-то вроде того. т.е. допускается множественный выбор, это ж флаги ёмыть.

повторю еще раз вопрос. как забиндешь?
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321775
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, мдяааа... я сомневаюсь, что на твоём ресурсе найдется рецептик по работе с енумом с флагами — принципиальная разница в том, что рендерится не дропдаун там или радиобатоны, а мультиселектлист/чекбокслист, ну или что-то вроде того. т.е. допускается множественный выбор, это ж флаги ёмыть.
Принцип тот же. Пишется свой темплейт в EditorTemplates и маркируется енум через UIHint.

hVosttповторю еще раз вопрос. как забиндешь?
См. выше.

P.S. Учи штатные инструменты MVC, а не пытайся переделать мир.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321795
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ты не понял вопроса первый раз,.. не понял и во второй. бог с тобой, я уж понял, это не лечится.

про рендеринг вопрос был? в третий раз: как забиндешь пришедшие данные в поле типа [Flags] Enum своими штатными средствами — хоть до усёру можешь свои штатные средства пропихивать, но в этом случае ты обломаешься, я те гарантирую это.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321797
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

а раз не знаешь, лучше не лезь туда, где вообще не в зуб ногой...
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321800
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, ты не понял вопроса первый раз,.. не понял и во второй. бог с тобой, я уж понял, это не лечится.
Убей себя. Или научись задавать вопросы.

hVosttпро рендеринг вопрос был? в третий раз: как забиндешь пришедшие данные в поле типа [Flags] Enum своими штатными средствами — хоть до усёру можешь свои штатные средства пропихивать, но в этом случае ты обломаешься, я те гарантирую это.
Я просто так данные не бинжу. Просто так даже мухи в туалет не ходят. Если мне нужно биндить енум в модель, значит есть во вью контнрол. Следовательно, это задача рендеринга. Если мне нужен тот же CheckBoxListFor, я возьму и сделаю хелпер .

P.S. Мне фиолетовы твои "задачки", оторванные от реальности. Если нужно просто так биндить - сходи в сад.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321802
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, а раз не знаешь, лучше не лезь туда, где вообще не в зуб ногой...
Ты едва научился формулировать свои тяжкие мысли, а уже про зубы с ногами заговорил. Даже не смешно.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321816
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

супер. какая разница, что ты код перенес в другое место, по маппингу из своего массива валуев в енум. и можно забыть о повторном использовании техники. короч говнокодище. но это и не важно.

ведь, как забиндеть ты так и не сказал. обходные пути — лесом. о них я не просил. как всегда, приведешь решение на любую свою проблему , но проигноришь задачу.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321821
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТы едва научился формулировать свои тяжкие мысли, а уже про зубы с ногами заговорил. Даже не смешно.

смешно то, что ты опять мажешься. «так не делается» (у МСУ надо пологать) «зачем это нужно».... да ты просто генератор отмазок. не знаешь так и скажи, все поймут. а своими хелперами можешь подтереться, так как о них речь вообще не шла.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321823
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, у меня к примеру ViewModel в JSON сериализуется, так что не вижу, чем мне твой код полезен.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321826
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, супер. какая разница, что ты код перенес в другое место, по маппингу из своего массива валуев в енум. и можно забыть о повторном использовании техники. короч говнокодище. но это и не важно.
Какое другое место? Я никуда ничего не переношу, я использую стандартный функционал и хелперы, вынесенные в отдельную сборку. Если это нужно использовать в других проектах, я использую тот же стандартный функционал и сборку с хелперами. Ты о чем?

hVosttведь, как забиндеть ты так и не сказал. обходные пути — лесом. о них я не просил. как всегда, приведешь решение на любую свою проблему , но проигноришь задачу.
Просто так даже гуси не биндятся. Я тебе уже объяснил, меня не интересуют сферические задачи в вакууме. Я ничего просто так не бинжу. Если я что-то бинжу, то для чего-то . Вот эту задачу "для чего-то" я и решаю, а не действую от противного.

У нас две принципиально разные позиции:

1. Я решаю задачу в разрезе требования и достаю гланды через рот с помощью стандартный щипцов.
2. Ты решаешь задачу в разрезе автоматизации всего мира и достаешь гланды через задницу с помощью лопаты, которую тебе на время одолжил сосед.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321831
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУТы едва научился формулировать свои тяжкие мысли, а уже про зубы с ногами заговорил. Даже не смешно.

смешно то, что ты опять мажешься. «так не делается» (у МСУ надо пологать) «зачем это нужно».... да ты просто генератор отмазок. не знаешь так и скажи, все поймут. а своими хелперами можешь подтереться, так как о них речь вообще не шла.

Смешно то, что ты опять свой убогий универсальный код не знаешь к чему приткнуть. Навыдумывал себе сферических задач и с гордостью пишешь про не менее сферический байдинг. От чего мне "отмазываться", от твоего бреда? Не смешно даже.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321837
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

я тя поздравляю! молодцом! но какое это имеет к теме отношение? разве спрашивалось про уместность расширения стандартного бинедера? што за нравы...
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321841
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСмешно то, что ты опять свой убогий универсальный код не знаешь к чему приткнуть. Навыдумывал себе сферических задач и с гордостью пишешь про не менее сферический байдинг. От чего мне "отмазываться", от твоего бреда? Не смешно даже.

от того, что ты вякаешь не к селу ни к городу. просто так, несешь феерический бред, при чем ни к месту. если те не нужен биндинг, нравится писать хелперы, ради бога. скажи спасибо, что стандартный биндер умеет хоть что-то кроме строк биндить, а то хелперов пришлось бы писать еще больше. давай не беси свой тупостью. раз такой грамотный молодец, иди мимо.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321848
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, у меня к примеру ViewModel в JSON сериализуется, так что не вижу, чем мне твой код полезен.

хм... ну здорово :) у меня тоже много чего во много чего сериализуется. по вопросу кастомного расширения биндинга во многих книгах есть целые главы, на стеке очень много вопросов и ответов, очень много в сети всяких мануалов, на сайте asp.net туториалы. да и сам фреймворк заточен под расширение.. но....... дайте-как подумать. А! точняк! если это не нужно МСУ и еще кому-то, то — вот жешь дэбилы эти люди, ну конкретные дауны, больше половины команды разработчиков ASP.NET MVC мог бы заменить один МСУ, столько бумаги измарать на ненужную доку, оно же не нужно никому, сколько же людей заблуждается. надо срочно им всем открыть глаза! я этим займусь.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321863
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, я тя поздравляю! молодцом! но какое это имеет к теме отношение? разве спрашивалось про уместность расширения стандартного бинедера? што за нравы...
Спасибо за поздравления, но я опять тебя не понял. Отношение чего к чему?

hVosttот того, что ты вякаешь не к селу ни к городу. просто так, несешь феерический бред, при чем ни к месту. если те не нужен биндинг, нравится писать хелперы, ради бога. скажи спасибо, что стандартный биндер умеет хоть что-то кроме строк биндить, а то хелперов пришлось бы писать еще больше. давай не беси свой тупостью. раз такой грамотный молодец, иди мимо.
Какой-то поток слюны. Остановись и еще раз сформулируй свою мысль. Еще раз, хелперы пишут не для наличия биндинга. Бред сивой кобылы.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321865
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAhVostt, у меня к примеру ViewModel в JSON сериализуется, так что не вижу, чем мне твой код полезен.

хм... ну здорово :) у меня тоже много чего во много чего сериализуется. по вопросу кастомного расширения биндинга во многих книгах есть целые главы, на стеке очень много вопросов и ответов, очень много в сети всяких мануалов, на сайте asp.net туториалы. да и сам фреймворк заточен под расширение.. но....... дайте-как подумать. А! точняк! если это не нужно МСУ и еще кому-то, то — вот жешь дэбилы эти люди, ну конкретные дауны, больше половины команды разработчиков ASP.NET MVC мог бы заменить один МСУ, столько бумаги измарать на ненужную доку, оно же не нужно никому, сколько же людей заблуждается. надо срочно им всем открыть глаза! я этим займусь.

Какой-то бред сумасшедшего...
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321896
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

итак, у нас есть DTO, где сидит поле [Flags] Enum

есть вью-модель, где у тебя int[]

и вот такое уже не прокатит Html.EditorFor(x => x.Value) или хелпер Html.MyEditor(x => x.Value), надо позаботиться, чтобы передать правильный MultiSelectList, — лишний повторяющийся код

потом полученные данные надо еще собрать обратно в Enum... и все это покрыто жирным слоем ненужной обвязки.


в ситуации с [Flags] Enum во вью модели следующие преимущества:

1. не теряется тип, поэтому никакие MultiSelectList передавать не нужно, и даже заботиться об этом, все что нужно для рендеринга сидит в самом типе [Flags] Enum
2. маппинг из и в DTO прямой, ничего ковырять отдельно чтобы запамить не нужно
3. все!

но надо научиться делать кастомный биндинг. что конечно ппц как нелегко.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321920
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,

итак, у нас есть DTO, где сидит поле [Flags] Enum

есть вью-модель, где у тебя int[]

и вот такое уже не прокатит Html.EditorFor(x => x.Value) или хелпер Html.MyEditor(x => x.Value), надо позаботиться, чтобы передать правильный MultiSelectList, — лишний повторяющийся код

потом полученные данные надо еще собрать обратно в Enum... и все это покрыто жирным слоем ненужной обвязки.

По-моему проблема, раздутая на пустом месте. Если мне нужен малти чекбоксы, я использую проверенный вариант. Мне не нужен в данном случае енум. Если потребуется, я напишу свой хелпер или EditorTemplates + UIHint.

hVosttно надо научиться делать кастомный биндинг. что конечно ппц как нелегко.
Я тебе говорю не о том, что кастомный биндинг это плохо, а о том, что проблема "твоя" надумана и высосана из пальца. Писать кастомный байдинг ради того, чтобы он что-то там пробайндил с флагами. Да ты неимоверно крут, товарещ
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321921
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
никакие [мудти]селектлисты не нужны

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
@model Enum
@{
    var name = ViewData.TemplateInfo.HtmlFieldPrefix;
    var type = Model.GetType();
    
}

@foreach (Enum e in Enum.GetValues(type))
{
    var display = type.GetField(Enum.GetName(type, e)).GetCustomAttribute<DisplayAttribute>();
    if (display != null && (display.GetAutoGenerateField() ?? true))
    {
    <label class="checkbox" title="@display.GetDescription()">
        <input type="checkbox" name="@name" value="@e.ToString()" checked="@Model.HasFlag(e)" />
        @display.Name
    </label>
    }
}
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321929
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПо-моему проблема, раздутая на пустом месте. Если мне нужен малти чекбоксы, я использую проверенный вариант. Мне не нужен в данном случае енум. Если потребуется, я напишу свой хелпер или EditorTemplates + UIHint.

так правильно, твой едитор темплейт забиндится в коллекцию int[] , которую тебе в любом случае надо будет собирать в enum — лишняя работа. кроме того, твой хелпер не обладает информацией о том, что рендерит, тебе надо специально мультиселект лист передавать. везде по-чуть-чуть, в итоге лапша доширак, индусы обзавидуются.

да и не только ради енумов, енумы привел как пример того, что однозначно не биндится, только через Ж... с изобретанием своих хелперо-велосипедов. вообще, что угодно кастомизировать. нет желания на каждый чих покрывать код слоем хелперов, потом это не поддерживаемое гумно развивать. однозначный биндинг, и вью-модель максимально приближенная к тому, с чем реально работаешь, а не высеры типа коллекции int[], когда на самом деле там должен быть енум с флагами.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321931
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttникакие [мудти]селектлисты не нужны

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
@model Enum
@{
    var name = ViewData.TemplateInfo.HtmlFieldPrefix;
    var type = Model.GetType();
    
}

@foreach (Enum e in Enum.GetValues(type))
{
    var display = type.GetField(Enum.GetName(type, e)).GetCustomAttribute<DisplayAttribute>();
    if (display != null && (display.GetAutoGenerateField() ?? true))
    {
    <label class="checkbox" title="@display.GetDescription()">
        <input type="checkbox" name="@name" value="@e.ToString()" checked="@Model.HasFlag(e)" />
        @display.Name
    </label>
    }
}



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
 public static MvcHtmlString CheckBoxListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty[]>> expression, MultiSelectList multiSelectList, object htmlAttributes = null)
        {
            MemberExpression body = expression.Body as MemberExpression;
            string propertyName = body.Member.Name;

            TProperty[] list = expression.Compile().Invoke(htmlHelper.ViewData.Model);

            List<string> selectedValues = new List<string>();

            if (list != null)
            {
                selectedValues = new List<TProperty>(list).ConvertAll<string>(delegate(TProperty i)
                { return i.ToString(); });
            }

            TagBuilder divTag = new TagBuilder("div class=\"CheckBoxListFor\"");
            divTag.MergeAttributes(new RouteValueDictionary(htmlAttributes), true);

            foreach (SelectListItem item in multiSelectList)
            {
                divTag.InnerHtml += String.Format("<label><input type=\"checkbox\" name=\"{0}\" id=\"{0}_{1}\" " +
                                                    "value=\"{1}\" {2} />{3}</label>",
                                                    propertyName,
                                                    item.Value,
                                                    selectedValues.Contains(item.Value) ? "checked=\"checked\"" : "",
                                                    item.Text);
            }

            return MvcHtmlString.Create(divTag.ToString());
        }
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321934
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAhVostt, у меня к примеру ViewModel в JSON сериализуется, так что не вижу, чем мне твой код полезен.

хм... ну здорово :) у меня тоже много чего во много чего сериализуется. по вопросу кастомного расширения биндинга во многих книгах есть целые главы, на стеке очень много вопросов и ответов, очень много в сети всяких мануалов, на сайте asp.net туториалы. да и сам фреймворк заточен под расширение.. но....... дайте-как подумать. А! точняк! если это не нужно МСУ и еще кому-то, то — вот жешь дэбилы эти люди, ну конкретные дауны, больше половины команды разработчиков ASP.NET MVC мог бы заменить один МСУ, столько бумаги измарать на ненужную доку, оно же не нужно никому, сколько же людей заблуждается. надо срочно им всем открыть глаза! я этим займусь.Ты нервы-то побереги.
Мне хватает своего биндера:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
public class ModelBinder<T> : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        HttpRequestBase request = controllerContext.HttpContext.Request;
        string requestData;
        Stream requestStream = request.InputStream;

        requestStream.Seek(0, SeekOrigin.Begin);

        // Get the data that's been posted
        using (var reader = new StreamReader(requestStream))
        {
            requestData = reader.ReadToEnd();
        }

        return this.BindModel(requestData);
    }

    protected virtual T BindModel(string requestData)
    {
        return Deserialize<T>(requestData);
    }

    protected TResult Deserialize<TResult>(string requestData)
    {
        return requestData.DeserializeObject<TResult>();
    }
}

Из этого следует, что твой код мне походу бесполезен, а не то что ты тут понаписал.

Ты тему для пятничного срача что-ли создал?
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321935
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ты передаешь ещё какой-то MultiSelectList multiSelectList — в догонку. такой код эт гумно.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321939
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAТы нервы-то побереги.
Мне хватает своего биндера:

выкинь на помойку и пользуйся моим. и точка. даже спорить не о чем. мой лучше.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321940
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУПо-моему проблема, раздутая на пустом месте. Если мне нужен малти чекбоксы, я использую проверенный вариант. Мне не нужен в данном случае енум. Если потребуется, я напишу свой хелпер или EditorTemplates + UIHint.

так правильно, твой едитор темплейт забиндится в коллекцию int[] , которую тебе в любом случае надо будет собирать в enum — лишняя работа. кроме того, твой хелпер не обладает информацией о том, что рендерит, тебе надо специально мультиселект лист передавать. везде по-чуть-чуть, в итоге лапша доширак, индусы обзавидуются.

Я ж тебе написал, вариантов несколько, что ты со своими енумами мечешься как угорелый. Если это dto класс, то удобно int[] использовать. Если хочешь не через хелпер, а сразу енум прорисовать - бери EditorTemplates и рисуй свои флаги, а через UIHint подтягивай нужный темплейт. Это тебе не говнокодить биндеры, тут даже таджики посмеются над тобой, а индусы подавно.

hVosttда и не только ради енумов, енумы привел как пример того, что однозначно не биндится, только через Ж...
Да ты еще не научился формулировать мысли, а уже в бой. Занятно.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321943
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, ты передаешь ещё какой-то MultiSelectList multiSelectList — в догонку. такой код эт гумно.
Это не какой-то MultiSelectList, а нативный список элементов , из которого пользователи могут выбрать несколько элементов. Учи матчасть, бестолочь.

hVosttskyANAТы нервы-то побереги.
Мне хватает своего биндера:

выкинь на помойку и пользуйся моим. и точка. даже спорить не о чем. мой лучше.
Аргументы уровня канализационных стоков. Даже не удивительно.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321948
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,Я ж тебе написал, вариантов несколько, что ты со своими енумами мечешься как угорелый. Если это dto класс, то удобно int[] использовать. Если хочешь не через хелпер, а сразу енум прорисовать - бери EditorTemplates и рисуй свои флаги, а через UIHint подтягивай нужный темплейт. Это тебе не говнокодить биндеры, тут даже таджики посмеются над тобой, а индусы подавно.


так так, вот о последнем по-подробней. нужный темлейт подтянут, все отрисовано через UIHint, все круто. пользователь сабмитит форму. ну и как мне все это наредеренное добро в Enum запхать? или через твои горемычные int[] прокидывать? я ж сказал, этот вариант — лажа, слишком много ненужной обвязки.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321954
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,Я ж тебе написал, вариантов несколько, что ты со своими енумами мечешься как угорелый. Если это dto класс, то удобно int[] использовать. Если хочешь не через хелпер, а сразу енум прорисовать - бери EditorTemplates и рисуй свои флаги, а через UIHint подтягивай нужный темплейт. Это тебе не говнокодить биндеры, тут даже таджики посмеются над тобой, а индусы подавно.


так так, вот о последнем по-подробней. нужный темлейт подтянут, все отрисовано через UIHint, все круто. пользователь сабмитит форму. ну и как мне все это наредеренное добро в Enum запхать? или через твои горемычные int[] прокидывать? я ж сказал, этот вариант — лажа, слишком много ненужной обвязки.
Так собирай массив после сабмита. В чем сложности?
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321958
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЭто не какой-то MultiSelectList, а нативный список элементов , из которого пользователи могут выбрать несколько элементов. Учи матчасть, бестолочь.

я понимаю, что пятница... что надо шутить. харе уже гнать про свою «нативность». нет там её, и не было никогда. скачай код MVC и внимательно поищи там свою нативность. надеюсь найдешь.

ты мне не про сам MultiSelectList рассказывай, а про то как ты его готовишь, оно же не само... не смотря на то что оно тип «нативное», всетаки не волшебное.


МСУАргументы уровня канализационных стоков. Даже не удивительно.

я рад, что ты наконец это осознал. именно так ты обычно и рассуждаешь. без апелляционно, вот так «моё мнение лучше, идите лесом». а табличка «сарказм» просто не пропечаталась
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321959
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAТы нервы-то побереги.
Мне хватает своего биндера:

выкинь на помойку и пользуйся моим. и точка. даже спорить не о чем. мой лучше. Понятно всё с тобой. В Сургуте сегодня трололо-день.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321964
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТак собирай массив после сабмита. В чем сложности?

мне лень это делать каждый раз. и зачем, если можно обойтись вовсе без этого? я уже забыл про это, енум с флагами, как нативный тип данных для MVC, для этого всего лишь надо было немного проапгрейдить дефолтный биндер.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321965
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttя понимаю, что пятница... что надо шутить. харе уже гнать про свою «нативность». нет там её, и не было никогда. скачай код MVC и внимательно поищи там свою нативность. надеюсь найдешь.

ты мне не про сам MultiSelectList рассказывай, а про то как ты его готовишь, оно же не само... не смотря на то что оно тип «нативное», всетаки не волшебное.
Что хотел-то сказать? Я уже теряю логическую нить дискуссии. Тебя заносит то влево, то вправо, то вообще куда-то взад. Соберись.

hVosttМСУАргументы уровня канализационных стоков. Даже не удивительно.
я рад, что ты наконец это осознал.
То есть ты только что подписался под то, что твои аргументы уровня канализационных стоков. Великолепно! Даже как-то быстро согласился, я думал еще посопротивляешься.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321968
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУТак собирай массив после сабмита. В чем сложности?

мне лень это делать каждый раз. и зачем, если можно обойтись вовсе без этого? я уже забыл про это, енум с флагами, как нативный тип данных для MVC, для этого всего лишь надо было немного проапгрейдить дефолтный биндер.
Каждый раз ничего делать не надо, один раз написал и забыл.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321969
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

у тя тоже свой биндер. т.е. для своих нужд ты этой возможностью расширения пользуешься. я так и не понял в чем претензия? в том, что мой вариант который привел тебе не нужен, так как ты работаешь с JSON? смею предположить, что программистам на PHP он тоже не нужен. надеюсь, они не предут в эту ветку, сообщить об этом?
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321972
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANA,

у тя тоже свой биндер. т.е. для своих нужд ты этой возможностью расширения пользуешься. я так и не понял в чем претензия? в том, что мой вариант который привел тебе не нужен, так как ты работаешь с JSON? смею предположить, что программистам на PHP он тоже не нужен. надеюсь, они не предут в эту ветку, сообщить об этом?
Ты даже адекватный пример для сравнения сформулировать не в состоянии. Причем тут PHP?
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321976
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

просто не нужна лишняя кривая сущность.

ты же не работаешь с char[], а работаешь со string. потому что это строки. также и флаги, это не int[], а enum. зачем так корёжить логику?
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321979
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТы даже адекватный пример для сравнения сформулировать не в состоянии. Причем тут PHP?

адекватный пример здесь не подойдет
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321988
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, просто не нужна лишняя кривая сущность.
Которую ты и наговнокодил. Изумительно.

hVosttты же не работаешь с char[], а работаешь со string. потому что это строки. также и флаги, это не int[], а enum. зачем так корёжить логику?
Работай с string[], работай с DateTime[], да с чем угодно. Фантазии нет предела.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321989
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУТы даже адекватный пример для сравнения сформулировать не в состоянии. Причем тут PHP?
адекватный пример здесь не подойдет
У тебя всегда были трудности с адекватными примерами. Мы привыкли.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321991
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttу тя тоже свой биндер. т.е. для своих нужд ты этой возможностью расширения пользуешься. я так и не понял в чем претензия? в том, что мой вариант который привел тебе не нужен, так как ты работаешь с JSON? смею предположить, что программистам на PHP он тоже не нужен. надеюсь, они не предут в эту ветку, сообщить об этом? Мнительный ты парень. Нет у меня к тебе претензий. Просто выссказал своё мнение.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321992
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

ну дык.

@Html.EditorFor(x => x.MyFlagsEnumProperty)

и ни строчки лишнего кода. енум сам себя описывает с помощью атрибутов DisplayAttribute, локализованные строчки сидят в ресурсах. все по феншую. никаких изуверских int[] которые мне не сдались здесь задаром.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38321998
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAу меня к примеру ViewModel в JSON сериализуется, так что не вижу, чем мне твой код полезен.

ну тебе потребовался собственный биндер (что стало ясно только потом). биндер для всей модели, и не вижу причин в данном случае рассматривать настройку биндинга отдельных пропертей в данном контексте. который совсем не для JSON. я тоже не вижу чем мой код в данном случае может быть полезен. но надо еще раз глянуть. может что-то всё-таки упустили :)
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322003
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУадекватный пример здесь не подойдет
У тебя всегда были трудности с адекватными примерами. Мы привыкли.[/quot]

тайлер дёрден, выходи из МСУ :)
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322004
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,skyANA
Привет, все воюете с ветряными мельницами? ))
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322011
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, кстати, разве System.Web.Mvc.CustomModelBinderAttribute не подходит для твоей задачи?
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322014
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУ,skyANA
Привет, все воюете с ветряными мельницами? ))
Даров качкам! Да вот, мелюзгу шпыняем и пытаемся объяснить на пальцах, что это всё фееричная хрень
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322021
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, кстати, разве System.Web.Mvc.CustomModelBinderAttribute не подходит для твоей задачи?
Дополнение моделей собственными атрибутамиПомимо добавления сопоставления типов в словарь ModelBinders, инфраструктура ASP.NET MVC предлагает абстрактный атрибут System.Web.Mvc.CustomModelBinderAttribute, позволяющий динамически создавать механизм связывания модели для каждого класса или свойства , к которому применен этот атрибут.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322024
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAhVostt, кстати, разве System.Web.Mvc.CustomModelBinderAttribute не подходит для твоей задачи?

Код: c#
1.
2.
3.
4.
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Struct|
AttributeTargets.Enum|AttributeTargets.Interface|
AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
public abstract class CustomModelBinderAttribute : Attribute



на класс/интерфейс, но не на проперти. если только чисто для енумов, но енумы описываются в слое данных, который не знает о web.mvc поэтому тоже не годиться.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322027
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУГде-то в степиМСУ,skyANA
Привет, все воюете с ветряными мельницами? ))
Даров качкам! Да вот, мелюзгу шпыняем и пытаемся объяснить на пальцах, что это всё фееричная хрень
Надо быть толерантным )), здорово скана его припечатал..
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322029
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

только расширение DefaultModelBinder или каждой вью-модели биндер вручную назначать.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322037
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУпропущено...

Даров качкам! Да вот, мелюзгу шпыняем и пытаемся объяснить на пальцах, что это всё фееричная хрень
Надо быть толерантным )), здорово скана его припечатал..

мсу пальцы сломал и тя на помощь позвал? ))
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322045
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиМСУпропущено...

Даров качкам! Да вот, мелюзгу шпыняем и пытаемся объяснить на пальцах, что это всё фееричная хрень
Надо быть толерантным )), здорово скана его припечатал..
И так почти в каждом треде. Сначала забавляло, а теперь даже иногда жалко юного глупыша hVostt. Но, с другой стороны, это нормально. Хоть мозгов больше наберется на форумах. :)
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322051
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пральна, если уж хочешь научиться тупить нативно, гоу на обучение к доброму дядьке мсу и к его банде старперов, с которых уже сыпется ))
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322059
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ладно, похоже по теме сказать нечего, ну кроме skyANA... тема так и не раскрыта. МСУ, то что ты мне пропихивал 3 страницы, уже давно пройденный этап. я именно так задачу решал год назад. тогда вот и нужны были твои гениальные советы.

по поводу приведенного мною кода, для кастомизации биндинга пропертей лучше пока ничего в MVC нет. критики не услышал.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322071
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAhVostt, кстати, разве System.Web.Mvc.CustomModelBinderAttribute не подходит для твоей задачи?

Код: c#
1.
2.
3.
4.
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Struct|
AttributeTargets.Enum|AttributeTargets.Interface|
AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
public abstract class CustomModelBinderAttribute : Attribute



на класс/интерфейс, но не на проперти. если только чисто для енумов, но енумы описываются в слое данных, который не знает о web.mvc поэтому тоже не годиться.Так загляни уже тогда в метод BindProperty, что переопределил.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322078
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и класс-то абстрактный, то есть подразумевается, что от него надо отнаследоваться. А к наследнику можно и свой AttributeUsage применить, включающий AttributeTargets.Property.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322083
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

если переопределить метод BindProperty, а атрибут повесить на модель, то работать тоже будет.

и вот так тоже:

[ModelBinder(typeof(PropertyModelBinder))]
public class ....


но требовалось вешать биндер на проперти, чтобы это везде работало, без лишних шаманств. для этого нужно расширить DefaultModelBinder
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322085
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttтолько расширение DefaultModelBinder или каждой вью-модели биндер вручную назначать.Не только. Я же тебе Джесса Чэдвика процитировал

P.S.: судя по тому, что ты полез декомпайлером на CustomModelBinderAttribute смотреть, ты в эту сторону даже не думал. Понятно.
Ну ты поизучай вопрос, потом расскажешь о том, подходит, или нет.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322090
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttпральна, если уж хочешь научиться тупить нативно, гоу на обучение к доброму дядьке мсу и к его банде старперов, с которых уже сыпется ))
Чтобы чему-то научиться, нужно уметь формулировать задачу и мысли приводить в порядок. То, что происходит с тобой - обычный случай из детского сада. Я ж говорю, уже даже не смешно. По началу забавляло.

hVosttладно, похоже по теме сказать нечего, ну кроме skyANA... тема так и не раскрыта. МСУ, то что ты мне пропихивал 3 страницы, уже давно пройденный этап. я именно так задачу решал год назад. тогда вот и нужны были твои гениальные советы.

по поводу приведенного мною кода, для кастомизации биндинга пропертей лучше пока ничего в MVC нет. критики не услышал.
Тема была раскрыта в моем первом посте в этой ветке. Твои наивные детские местячковые задачки идут лесом. Задача решается банально и просто, не требуя какой-то неимоверный маппинг. Так что сейчас ты можешь писать что угодно о том, что ты там где-то чего-то год назад делал. Об этом никто и так не узнает. А на самом-то деле год назад ты еще вершки в институте набивал, зачитываясь букварями для малышей. Ну что ты, будто мы тебя не знаем. Достаточно ты тут уже отжигал.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322091
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322094
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttесли переопределить метод BindProperty, а атрибут повесить на модель, то работать тоже будет.

и вот так тоже:

[ModelBinder(typeof(PropertyModelBinder))]
public class ....


но требовалось вешать биндер на проперти, чтобы это везде работало, без лишних шаманств. для этого нужно расширить DefaultModelBinderВнимательнее будь.
Код: c#
1.
2.
3.
4.
5.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Enum |
  AttributeTargets.Interface | AttributeTargets.Parameter |
  AttributeTargets.Struct | AttributeTargets.Property,
  AllowMultiple = false, Inherited = false)]
public class MyModelBinderAttribute : CustomModelBinderAttribute

И вешай себе на свойство модели.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322095
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANA,

я попробую :)

но всё же

http://www.prideparrot.com/blog/archive/2012/6/customizing_property_binding_through_attributes

Да можно, никто и не спорит. Но для жизненных реалий не нужен этот лисапед. О чем я тебе в самом начале и ответил. Ты поход на белку, которую загнали в колесо
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322100
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttя попробую :)Вот и славно.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322111
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

тебе показать направление? или сам найдешь? читай свежую литературу, попробуй уже выйти за рамки туториалов и гайдов майкрософта. когда уже тебе серьезную задачу дадут? а то вылизываешь свой обработчик данных в зип уже какой год по ходу. судя по всему именно поэтому времени хватает у тебя свободного, чтобы натрындеть сообщений больше, чем у всех мемберов в этой ветке форума вместе взятых.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322123
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, тебе показать направление?
А ты способен что-то показать? Не верю (с)
Ты даже свой клубок запутанных мыслей сформулировать с первого раза не можешь.

hVosttчитай свежую литературу
Чтобы быть таким гуру как ты? Я пас Буду лучше гуглить

hVosttпопробуй уже выйти за рамки туториалов и гайдов майкрософта. когда уже тебе серьезную задачу дадут?
А причем тут туториалы? Речь о конкретной задаче, которая может решаться через зад и через прямые руки. В твоем случае задача решается через зад.

hVosttа то вылизываешь свой обработчик данных в зип уже какой год по ходу.
Ты о чем? У тебя помутнение рассудка?

hVosttсудя по всему именно поэтому времени хватает у тебя свободного, чтобы натрындеть сообщений больше, чем у всех мемберов в этой ветке форума вместе взятых.
По делу всё?
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322142
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

я тебя не спрашивал, как рендерить енумы в дропдаун или в чекбоклист. спрашивал только про кастомный биндинг в проперти и привел пример с енумом — это был пример, если ты еще не понял. твои советы, будь они хоть трижды правильные в данном случае не нужны. а раз ты не знаешь как сделать биндинг, глупо прячась за «а мне это не надо» как глупый мальчишка, который не успел придумать подходящую отмазку, то и не надо тогда вообще вякать. я понял уже, ты шибко грамотный специалист, и делаешь «добро» направо и налево, особенно в направлении тех кому оно даром не нужно, но ты упорно продолжаешь впихивать свои идеи. как маньяк. запарил уже. задрал. ни разу ниче умного за последнее время не сказал по обсуждаемой теме , только советы, левые и совсем не к месту.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322170
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, я тебя не спрашивал, как рендерить енумы в дропдаун или в чекбоклист.
Ну вот видишь, у тебя не только с формулировкой задачи проблема, но еще и с памятью 14527140

hVosttпринципиальная разница в том, что рендерится не дропдаун там или радиобатоны, а мультиселектлист/чекбокслист

То есть ты изначально пытался точить камень под конкретную задачу. Я именно тебе так и понял и дал совет, что место твоему камню на помойке. И привел варианты. Ая-яй-яй, ну заврался же ты, как не стыдно

hVosttспрашивал только про кастомный биндинг в проперти и привел пример с енумом — это был пример, если ты еще не понял.
Кастомный биндинг в проперти идет лесом. Я уже писал, просто так даже гуси не биндятся. Не надо выдумывать на ходу сферические задачи в вакууме.

hVosttтвои советы, будь они хоть трижды правильные в данном случае не нужны.
Так как решать ту или иную задачу - твои проблемы. Хоть ты трижды обосрешься, мне с этого ни тепло ни холодно. Гораздо важнее то, что тебя читают такие же неофиты. Главное, чтобы в их голове всё правильно было. Повторюсь, а что так у тебя будет фигурировать в коде, хоть весь кодплекс на подпорках - мне фиолетово.

hVosttа раз ты не знаешь как сделать биндинг, глупо прячась за «а мне это не надо» как глупый мальчишка, который не успел придумать подходящую отмазку, то и не надо тогда вообще вякать.
Я-то знаю как нужно сделать биндинг, но в нужный момент времени и под конкретную задачу. Ту задачу, что описал ты (да еще и нагло и бесцеремонно заврался на счет чекбокслист) - в топку. Ибо от твоей реализации дурно пахнет.

hVosttзапарил уже. задрал. ни разу ниче умного за последнее время не сказал по обсуждаемой теме , только советы, левые и совсем не к месту.
Тише, тише, выдыхай )
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322178
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

итак. CustomModelBinderAttribute да?

переопределив класс, позволил вешаться ему на проперти. что вполне ожидаемо, повесив его на проперти, никакой магии не случилось и это не помогло. т.е. не работает, нет.

что ожидаемо, ибо он выдает IModelBinder по запросу своим методом GetBinder()

который в свою очередь должен реализовать следующий метод

public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)

который, как мы видим, не служит для обработки пропертей за неимением PropertyDescriptor propertyDescriptor
конечно, по пропертям можно было бы и самостоятельно пробежаться, только удовольствия от этого мало.

вердикт пока все тот же: экстенд DefaultModelBinder , ибо штатными (как некоторые говорят «нативными») средствами не предусмотрено навешивание биндеров на проперти. что для простых задач и не нужно, туториалы же обходятся как-то без этого
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322184
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

если б ты знал, то написал. а сейчас уже поздно махать кулаками. сначала написал по теме, потом изложил свои домыслы, а не наоборот. потому как ты из неофитов еще и не вылезал. простой биндинг на проперти замутить не можешь. а рассуждаешь так, как будто вселенские задачи решаешь. сс-студент.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322197
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, если б ты знал, то написал. а сейчас уже поздно махать кулаками.
1. Я тебе изначально всё написал.
2. Но ты начал съезжать с темы и нагло врать, что этот атрибут тебе нужен не для чекбокслиста, а вообще.
3. Я вот тут 14527140 показал, что ты нагло врешь, т.к. с самого начал ты знал, для чего изобретаешь лисапед. Вариант о вакуумном маппинге я сразу выбросил на свалку, т.к. эти сказки пойди лучше в сад детворе расскажи. И то засмеют. Писать маппинг для "просто так" даже студенты заочники не станут.

hVosttсначала написал по теме, потом изложил свои домыслы, а не наоборот. потому как ты из неофитов еще и не вылезал. простой биндинг на проперти замутить не можешь. а рассуждаешь так, как будто вселенские задачи решаешь. сс-студент.
Мало того ты наглый врунишка, так еще и меня к своей касте неофитов приурочиваешь? Не бывать этому!
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322198
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУповторю еще раз вопрос. как забиндешь?

что там у тебя в голове творится знает один лишь Сатана. как ты мог вот этот вопрос извратить до просьбы научить меня делать рендеринг чекбоксов, ну-ину... это уже даже не заврался, это уже крышак у тебя МСУ съезжает, что ты рыщешь по теме? в надежде отыскать оправдания своей тупости? ну давай еще повыдерай слов из контекста. посмотрим.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322201
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМало того ты наглый врунишка, так еще и меня к своей касте неофитов приурочиваешь? Не бывать этому!

ну давай поиграй ещё интеллектуальными мускулами, докажи что ты не неофит
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322202
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostthVosttповторю еще раз вопрос. как забиндешь?

что там у тебя в голове творится знает один лишь Сатана. как ты мог вот этот вопрос извратить до просьбы научить меня делать рендеринг чекбоксов, ну-ину... это уже даже не заврался, это уже крышак у тебя МСУ съезжает, что ты рыщешь по теме? в надежде отыскать оправдания своей тупости? ну давай еще повыдерай слов из контекста. посмотрим.

Я тебе четче некуда ответил на этот вопрос. EditorTemplates + маркер UIHint. Вот и вся недолгая. Только прошу тебя, не начинай опять, что речь идет именно о байдинге, а не о рендеринге. Я тебе всё сказал по этому поводу, врунишка.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322205
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУМало того ты наглый врунишка, так еще и меня к своей касте неофитов приурочиваешь? Не бывать этому!

ну давай поиграй ещё интеллектуальными мускулами, докажи что ты не неофит

Я так понимаю, что все потуги убедить общество в корректности и нужности твоего гавнокода - иссякли? Чтож, я и не сомневался в этом.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322206
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

да плевать на твой едитор. с самого начала. что с биндингом проперти? хде он, родимый?
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322208
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понимаю, хочется показать миру свои "таланты" и прочее. Ну ладно, опустили, сел в лужу, надавали подсрачников.
Но зачем нагло врать, что речь не шла о чекбокслистах, врунишка? :)
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322211
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, да плевать на твой едитор. с самого начала. что с биндингом проперти? хде он, родимый?
Идем по кругу. Как на счет старого доброго хелпера?
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322231
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЯ понимаю, хочется показать миру свои "таланты" и прочее. Ну ладно, опустили, сел в лужу, надавали подсрачников.
Но зачем нагло врать, что речь не шла о чекбокслистах, врунишка? :)

хм... интересно зачем же я упомянул про DI, не уж то биндер чекбоксов ресолвить?... вообще подсрачники твои конечно дело полезное, продолжай подрсачничать. вот он какой смыслс твоего существования, еще б немного ума. и можно было бы адекватно общаться, а не смачно троллить. ) а то ты как вовочка который вышел к доске и возомнил себя учителям, узрите же неофиты глас МСУ ))) держитесь за животы а то лопнете. как придумает себе что-нибудь )))
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322236
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANA,

итак. CustomModelBinderAttribute да?

переопределив класс, позволил вешаться ему на проперти. что вполне ожидаемо, повесив его на проперти, никакой магии не случилось и это не помогло. т.е. не работает, нет.

что ожидаемо, ибо он выдает IModelBinder по запросу своим методом GetBinder()

который в свою очередь должен реализовать следующий метод

public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)

который, как мы видим, не служит для обработки пропертей за неимением PropertyDescriptor propertyDescriptor
конечно, по пропертям можно было бы и самостоятельно пробежаться, только удовольствия от этого мало.

вердикт пока все тот же: экстенд DefaultModelBinder , ибо штатными (как некоторые говорят «нативными») средствами не предусмотрено навешивание биндеров на проперти. что для простых задач и не нужно, туториалы же обходятся как-то без этого Что-то я не понял зачем тебе понадобился PropertyDescriptor ?
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322302
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

ну проперти же биндим, с другой стороны это не важно. все равно не работает.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322313
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANA,

ну проперти же биндим, с другой стороны это не важно. все равно не работает.И что? Не проперти же от проперти.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322325
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

надо получить имя проперти, чтобы вытащить из контекста данные (с формы или ещё откуда).
хотя я понял мысль :)
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322353
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANA,

надо получить имя проперти, чтобы вытащить из контекста данные (с формы или ещё откуда).
хотя я понял мысль :)Ну дак это сделает дефолтный биндер и будет искать биндер для проперти по типу, или атрибуту. Вот последнее ты походу зачем-то повторно реализовал.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322488
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,
А что в контексте вопроса не возникло такой мысли
водим в модель добавочное поле. ( раскидываем флаговое значение на массив 1 строчка кода, и собираем из массива флаг - 1 строчка кода.)???
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
 public MyEnum MyEnum{get;set;}
 
  public MyEnum[] MyEnumForView
        {
            get { return MyEnum.ToList; }
            set { MyEnum=Парсим из Value}
            }
        }


Нам вообще больше писать ничего не надо, и работаем с вьюхой через него
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322946
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

неплохой костыль. особенно хорош, когда флаговых полей много.

не смешите мою бабушку своими студенческими поделками (с дивизом «грудью на штыки ради сохранения чистоты нативности»)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
	public class ExtendDefaultModelBinder : DefaultModelBinder
	{
		protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor)
		{
			var type = propertyDescriptor.PropertyType;
			if (type.IsEnum && type.IsDefined(typeof(FlagsAttribute), false))
			{
				var valueResult = bindingContext.ValueProvider.GetValue(propertyDescriptor.Name);
				var rawValues = valueResult == null
					? null
					: valueResult.RawValue as string[];

				if (rawValues != null)
				{
					var value = Enum.Parse(type, string.Join(",", rawValues));
					propertyDescriptor.SetValue(bindingContext.Model, value);
					return;
				}
				propertyDescriptor.SetValue(bindingContext.Model, Enum.GetValues(type).GetValue(0));
				return;
			}
			base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
		}
	}



и всё. биндинг флаговых енумов теперь работает везде и без лишнего оверхеда. скажем спасибо разработчикам MVC, которые позаботились о возможности расширения. я не знаю причин не использовать возможности фреймворка, раз они даны. оправдание  — это или религиозная упертость, либо нежелание учиться использовать возможности инструмента.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322950
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНу дак это сделает дефолтный биндер и будет искать биндер для проперти по типу, или атрибуту. Вот последнее ты походу зачем-то повторно реализовал.

дефолтный биндер не обрабатывает атрибуты на пропертях.
можете глянуть исходники ASP.NET MVC, чтобы убедиться в этом.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38322968
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Вам в Европу ехать надо..
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38323296
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANAНу дак это сделает дефолтный биндер и будет искать биндер для проперти по типу, или атрибуту. Вот последнее ты походу зачем-то повторно реализовал.

дефолтный биндер не обрабатывает атрибуты на пропертях.
можете глянуть исходники ASP.NET MVC, чтобы убедиться в этом.Да? Ну давай глянем:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
namespace System.Web.Mvc
{
    public class DefaultModelBinder : IModelBinder
    {
        protected virtual void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor)
        {
            string str = DefaultModelBinder.CreateSubPropertyName(bindingContext.ModelName, propertyDescriptor.Name);
            if (!bindingContext.ValueProvider.ContainsPrefix(str))
            {
                return;
            }
            IModelBinder binder = this.Binders.GetBinder(propertyDescriptor.PropertyType);


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
namespace System.Web.Mvc
{
    public class ModelBinderDictionary : IDictionary<Type, IModelBinder>, ICollection<KeyValuePair<Type, IModelBinder>>, IEnumerable<KeyValuePair<Type, IModelBinder>>, IEnumerable
    {
        private IModelBinder GetBinder(Type modelType, IModelBinder fallbackBinder)
        {
            IModelBinder binder = this._modelBinderProviders.GetBinder(modelType);
            if (binder != null)
            {
                return binder;
            }
            if (this._innerDictionary.TryGetValue(modelType, out binder))
            {
                return binder;
            }
            binder = ModelBinders.GetBinderFromAttributes(modelType, () => {
                CultureInfo currentCulture = CultureInfo.CurrentCulture;
                string modelBinderDictionaryMultipleAttributes = MvcResources.ModelBinderDictionary_MultipleAttributes;
                object[] fullName = new object[] { modelType.FullName };
                return string.Format(currentCulture, modelBinderDictionaryMultipleAttributes, fullName);
            });
            IModelBinder modelBinder = binder ?? fallbackBinder;
            return modelBinder;
        }


Дальше думаю сам разберёшься. С десятого-то раза.
...
Рейтинг: 0 / 0
Расширение стандартного MVC биндера
    #38323307
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, хотя извини, понял о чём ты. Ты прав про DefaultModelBinder. Но есть вторая реализация метода GetBinderFromAttributes.
...
Рейтинг: 0 / 0
93 сообщений из 93, показаны все 4 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Расширение стандартного MVC биндера
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]