Ana Sayfa | Blog | Fotoğraf Albümü  RSS | JSON
Daron Yöndem
Soru sorma merkezi!
Sunucu Kontrollerinin HTML ID leri.
Gön: Murat Topçu 

Masterpage hiç bir kontrolün id si birbiriyle çakışmasın diye sayfaya eklediğimiz kontrollerin id lerine ctl00$ContentPlaceHolder1$ gibisinden yazılar ekliyor. Bu ekleri nasıl kaldırabiliriz?
Gön: Daron Yöndem 

Selamlar,

Maalesef bunu kaldırma şansınız yok. Bunun yapılmasının nedeni şu; Hem MasterPage içerisinde hem de ana sayfa içerisinde TextBox1 adında kontroller bulunabilir. Oysa bir HTML sayfada bir kontrol ID'si sadece bir defa kullanılabilir. Bu çerçevede bir çakışma olmaması için ASP.NET otomatik olarak her kontrolün Parent kontrolünün ID'sini de kendi ID'sine ekleyerek HTML ID'leri yaratır.

Gerektiğinde herhangi bir kontrolün HTML ID'sine sunucu tarafında CliendID özelliği üzerinden ulaşabilirsiniz.
Gön: Murat Topçu 

Evet Html sayfada bir tane olmalı vede bu benim aşırı dikkat ettiğim bir konu. Tasarladığım sayfanın standartlara uyabilmesi için bu şart. Yalnız ben zaten tek olmasını sağlıyorum. Tek olmayınca .Net tarafında ve / veya benim çalışma mantığımda hatalar olabileceğini biliyorum. Tüm bunlara rağmen bu ekleri kaldırmak istiyorum.

Şuan zaten ClientID ile ulaşıp ona göre işlemlerimi yaptırıyorum ama kendisinin eklediği ekler anlamsız vede sayfa boyutunu boşuna şişiriyor. Herne kadar ben clt00'i "1" ContentPlaceHolder1'i "2" olarak değiştirsemde halen her kontrolde istemcinin hiçbir işine yaramayan 4 byte (1$2$) fazlalık oluşmakta.

Mesela Datalist kullanılırken koyduğu "br" etiketlerini kaldırmak istemiştim uzun araştırmalar sonucu bunun mümkün olmadığını yalnız "CSS Friendly Control Adapters" adında hazırlanmış kontroller ile bu sorunu çözebileceğimi bulmuştum. Bunun gibi ek eklemeyen bir mastper page bulamazmıyız :) Yada kendimiz yapamazmıyız? Kendim yapabilmem için döküman vb şeyler varmıdır?
Gön: Daron Yöndem 

Selamlar,

.NET tarafında sunucu taraflı kontrollerinin ID'lerinin sadece aynı dosya içerisinde aynı olması beklenir. Master Page ile ASPX'ler arasında bir eşleştirme yapılmaz. Maalesef bu sistemi devre dışı bırakma şansınız yok.

Sayfanın boyutunu olabildiğince şişirmemek ve oluşan ClientID'leri kısaltmak için tek yapabileceğiniz .NET kontrollerinizin adlarını olabildiğince kısa tutmak.

Kendiniz yapabilirsiniz, tüm render edilen HTML'i yazacak kodları oluşturmanız gerekecektir. Bunun yerine .NET sunucu kontrolleri yerine standart HTML kontrolleri kullanmak bile daha kolay olabilir. Fakat "CSS Friendlt Control Adapters" gibi bir çözüm bu konuyla ilgili ben bilmiyorum.
Gön: Murat Topçu 

Anladığım kadarıyla tam hakimiyet için tüm html çıktısını kendim üretmem gerekecek.

Cevaplarınız için teşekkürler.

Soru.Gonderen :
Gonderen.Mail :
Soru.Text :
Throw New Dikkat()!
*Sormak istediğiniz soru yukarıdaki soru başlığı ile alakalı değilse ana sayfadan yeni soru gönderiniz.
*Bu sayfadaki ana soru ile ilgili yorum gönderebilir veya yine ana soru ile ilgili yeni sorular sorabilirsiniz.