powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Расширение стандартного MVC биндера
18 сообщений из 93, страница 4 из 4
Расширение стандартного 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
18 сообщений из 93, страница 4 из 4
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Расширение стандартного MVC биндера
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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