Daha öncede aynı hataya düşmüş ve bana zaman kaybettirmiş bir sorunla yine karşılaştım. Bir projede bazı input elementlerini readonly yapmam gerekiyordu. Kullanıcı textbox, select,radiobutton gibi elemanlara veri girişi yapamayacak ya da seçemeyecekti. Buraya kadar sorun yok.
$('#divId1').find('input, textarea').attr('readonly', 'readonly');
$('#divId2').find('input, textarea').attr('readonly', 'readonly');
bu jquery kod parçası ile seçili html elementinin içindeki tüm input, textarea gibi html inputlarını seçilemez veri yazılamaz yapacaktır.
function readonly(id, value) {
$('#' + id).prop('disabled', value);
}
bu function ise gönderdiğim id ve değeri seçilen elementin propertysine disabled eklemektedir. örneğin kullanımı şu şekilde
readonly('MedeniHali', true);
bu kod parçası Medeni Hali select ini seçilemez yapacaktır. Zaten ben bu verileri bir şarta bağlı olarak seçilebilir ya da seçilemez olduğuna karar verdiriyorum. o yüzden böyle parametreli bir function a bağladım.
Peki ne fark oluşuyor disabled ile readonly arasında
Bu function ı yazarken düşünemediğim ise disabled olan html elementler post get isteklerine eklenmezler. Tabi üzerinden belli bir zaman geçip bu bölümdeki geliştirmeye devam edince. Uğraş başladı….
Önce custom bir model binding yazdım. Sandım ki verileri aldığım yerde tarihlerde sıkıntı var ondan oluyor. Hiç bir şekilde dto da ve entity de type ı datetime olan property verisi backend e geçmiyor. Sürekli null geçiyor. Sorunun model binding den olduğunu düşünmek ilk akla gelecek senaryolardandır. Bende de öyle oldu.
Sorunun model binding den olmadığını anlamam uzundan kısa sürdü. Neyse ki fazla uzamadan sorunu çözdüm.
Velhasıl disabled olan html elementler form verisi olarak post ya da get isteklerine eklenemez. Bu da kendime bir not olarak burada dursun…