Професионална програма
Loading...
svetlio_vd avatar svetlio_vd 3 Точки

Съвет за MVC Framework checkbox disabled опция

Колеги, моля ви за съвет как да походя с едно checkbox поле в APS .NET Core проект. Следният сценарии :

Имаме полета за име и ЕГН на клиент, които се отключват за редакция, когато CheckBoxFor полето е маркирано. Когато полето е размаркирано, текстовите полета са заключени и не позволяват редакция. Когато бланката е приключена, всички полета (в това число и чекбокса) трябва да бъдат заключени. Това се постига лесно, с булева зависимост, която кара чекбокса да изпадне в състояние disabled.

Проблемът е, че MVC Framework-а праща false стойност за чекбокса при последващ save на промени по клиента (освен име и ЕГН, има и други полета, които си стоят постоянно отворени за редакция), въпреки че визуално, а и в базата данни, стойността на чекбоса е true. Тоест ако дадено поле в disabled, framework-а праща false стойност до сървъра, при post. Четох за проблема няколко часа днес по разнородни сайтове и форуми, но не намерих конкретно решение. Не мога да ползвам drop down list, нито radio бутони - трябва да е checkbox и то checkboxfor, който е мапнат към едно property на клиента.

Опитвах какви ли не хитрости - през javascript-а, през контролера...все нещо се чупи и не работи както се очаква.

редакция : А, и още нещо - за съжаление checkbox-а няма опция "readonly" като другите полета.

Благодаря Ви!

Тагове:
0
C# MVC Frameworks - ASP.NET 25/05/2018 22:37:55
svetlio_vd avatar svetlio_vd 3 Точки

Реших проблема онзи ден - не е много изискано, но работи по следния начин :

във View-то има една if-else конструкция - като една булева променлива (без значение каква) е изпълнена, модела прави render на checkbox-а в state enabled, той си е мапнат към пропъртито и си индикира дали е цъкнат или не е.

Ако булевата променлива не е изпълнена, checkbox-а се визуализира disabled, отново мапнат с пропъртито, но се "ренди" и едно HiddenFor поле, мапнато към същото пропърти като чекбокса, но с друго id спрямо checkbox-а. Така api-то чете статуса на чекбокса коректно, дори когато е в статус disabled.

Същото нещо направиш и за 2 текстови полета и един select list, макар че при тях има опция и за readonly.

0